create or replace procedure procedureName(fields In Varchar2,strSql in varchar2,p_out Out Number) isvar_sql varchar2(8000); --存放构造游标的sql语句
type mycursor is ref cursor;  --定义游标类型
mycur mycursor;               --定义动态游标beginvar_sql:='Update Jz_Limit_Price Set '||fields;
var_sql:=var_sql|| strSql;--请问这样的Sql如何执行。谢谢...

解决方案 »

  1.   

    不行 
     编译错误错误: PLS-00103: 出现符号 "VAR_SQL"在需要下列之一时:
           :=.(@%;immediate
           符号 ":=" 被替换为 "VAR_SQL" 后继续。
    行: 30
    文本: execute var_sql;
      

  2.   

    declare
    v_cursorid number;
    v_sql varchar2(500);
    v_row int;
    begin
    v_cursorid=dbms_sql.open_cursor;
    v_sql:='Update Jz_Limit_Price Set '||fields;
    dbms_sql.parse(v_cursorID,sql_stmt,dbms_sql.v7);
    v_row:=dbms_sql.execute(v_cursorID);
    end;
      

  3.   

    declare
    v_cursorid number;
    v_sql varchar2(500);
    v_row int;
    begin
    v_cursorid=dbms_sql.open_cursor;
    v_sql:='Update Jz_Limit_Price Set '||fields;
    dbms_sql.parse(v_cursorID,sql_stmt,dbms_sql.v7);
    v_row:=dbms_sql.execute(v_cursorID);
    end;
      

  4.   

    declare
    v_cursorid number;
    v_sql varchar2(500);
    v_row int;
    begin
    v_cursorid=dbms_sql.open_cursor;
    v_sql:='Update Jz_Limit_Price Set '||fields;
    dbms_sql.parse(v_cursorID,sql_stmt,dbms_sql.v7);
    v_row:=dbms_sql.execute(v_cursorID);
    end;
      

  5.   

    To kuui_chiu() 
    这可以在存储过程中使用吗。试下
      

  6.   

    提示:PROCEDURE INFO.JZ_LIMIT_EXPERT_PRICE 编译错误错误: PLS-00201: 必须说明标识符 'SQL_STMT'
    行: 29
      

  7.   

    create or replace procedure procedureName(fields In Varchar2,strSql in varchar2,p_out Out Number) isvar_sql varchar2(8000); --存放构造游标的sql语句
    type mycursor is ref cursor;  --定义游标类型
    mycur mycursor;               --定义动态游标beginvar_sql:='Update Jz_Limit_Price Set '||:a;
    var_sql:=var_sql|| '=' ||''' || :b || ''';
    excute immediate var_sql using fields,strSql;....
      

  8.   

    还是不行
    PROCEDURE INFO.JZ_LIMIT_EXPERT_PRICE 编译错误错误: PLS-00049: 错误的赋值变量 'A'
    行: 26
    文本: var_sql:='Update Jz_Limit_Price Set '||:a;
      

  9.   

    不好意思,可能寫錯了.......
    declare
    v_cursorid integer;
    v_sql varchar2(500);
    v_row integer;
    begin
    v_cursorid=dbms_sql.open_cursor;
    v_sql:='Update Jz_Limit_Price Set '||fields;
    dbms_sql.parse(v_cursorID,v_sql,dbms_sql.native);
    v_row:=dbms_sql.execute(v_cursorID);
    dbms_sql.close_cursor(v_cursorID);
    end;
      

  10.   

    不好意思,可能寫錯了.......
    declare
    v_cursorid integer;
    v_sql varchar2(500);
    v_row integer;
    begin
    v_cursorid=dbms_sql.open_cursor;
    v_sql:='Update Jz_Limit_Price Set '||fields;
    dbms_sql.parse(v_cursorID,v_sql,dbms_sql.native);
    v_row:=dbms_sql.execute(v_cursorID);
    dbms_sql.close_cursor(v_cursorID);
    end;
      

  11.   

    不好意思,可能寫錯了.......
    declare
    v_cursorid integer;
    v_sql varchar2(500);
    v_row integer;
    begin
    v_cursorid=dbms_sql.open_cursor;
    v_sql:='Update Jz_Limit_Price Set '||fields;
    dbms_sql.parse(v_cursorID,v_sql,dbms_sql.native);
    v_row:=dbms_sql.execute(v_cursorID);
    dbms_sql.close_cursor(v_cursorID);
    end;