如何在存储过程中利用表参数进行查询

如何在存储过程中利用表参数进行查询,更新,插入啊,
小弟想写一个存储过程,来操作多个表,
因此把表名作为参数传进去了
在使用游标的时候,也用到了哪个表参数

各位大哥救急啊,帮帮忙啊
我也来说两句 查看全部回复

最新回复

  • blood8008 (2008-8-12 11:39:13)

    create or replace procedure pro_update_userScore
    (
    p_table_score_name IN CHAR,
    p_win_count IN NUMBER,
    p_lose_count  IN NUMBER,
    p_equal_count IN NUMBER,
    p_dis_count IN NUMBER,
    p_user_score IN NUMBER,
    p_speed IN NUMBER,
    p_user_level IN NUMBER,
    p_user_experience IN NUMBER,
    p_user_id  IN NUMBER,
    n_return   OUT NUMBER
    )
    is

    CURSOR  cur_score_Info(cr_user_id NUMBER)is

                            
          select  USER_ID, USER_LEVEL,USER_EXPERIENCE,USER_SCORE,WIN_COUNT,
                  LOSE_COUNT,EQUAL_COUNT,DIS_COUNT,SPEED
          from p_table_score_name ||
          where user_id=cr_user_id;

    ret_cr_score_info   cur_score_Info%ROWTYPE;     
          
      
      NO_USER_EXCSIT  EXCEPTION;
    begin
      i_count:=0;
      n_return :=0;
      FOR ret_cur_scrore IN cur_score_Info(p_user_id) LOOP
          ret_cr_score_info:=ret_cur_scrore;
          i_count:=i_count+1;
      END LOOP;   
      IF i_count=0 THEN
         RAISE NO_USER_EXCSIT;
      END IF;
      

      UPDATE p_table_score_name
      SET USER_LEVEL=p_user_level,USER_EXPERIENCE=p_user_experience,USER_SCORE=p_user_score,
              WIN_COUNT=p_win_count,LOSE_COUNT=p_lose_count,EQUAL_COUNT=p_equal_count,
             DIS_COUNT=p_dis_count,SPEED=p_speed
       WHERE user_id=p_user_id;
       
      COMMIT;
      EXCEPTION   
       WHEN NO_USER_EXCSIT   THEN
        ROLLBACK;
        n_return :=12;
       WHEN OTHERS THEN
       ROLLBACK;
        IF SQLCODE=1 THEN
           n_return :=13;
        ELSE
           n_return :=14;
        END IF;
    end pro_update_userScore;
  • wwwzq55888cn (2008-8-12 21:50:12)

    皇冠平台出租   http://www.zq666888.cn

    皇冠开户  http://www.zq3668.cn

    皇冠足球网  http://www.zq333.cn

    皇冠足球开户 http://www.ao3888.cn

    六?彩平台修改  http://www.zq55888.cn