为什么where后的内容改变了点就出错了呢?

解决方案 »

  1.   

    --try:execute immediate ModuleCalculate using to_char(company),salaryList;
      

  2.   

    Create Or Replace Procedure pppp(company Varchar2, salaryList Varchar2)As
    ModuleCalculate Varchar2(1000);
    Begin
    ModuleCalculate:='update T_SALARY_SQL set '||replace(ModuleCalculate,'sal','salary')||' where company_id = '||company||' and salary_list_cd ='||salaryList;
    execute immediate ModuleCalculate;
      
    End pppp;
      

  3.   

    认同 liuyi8903(甜脆夹心) 的.
      

  4.   

    使用liuyi8903(甜脆夹心) 这种方法是不行的,必须要用绑定变量,否则打出的SQL语句会缺少''。
    但还是非常感谢liuyi8903(甜脆夹心) 。请大家帮忙多想想办法!
      

  5.   

    ORARichard(没钱的日子......) 的方法:
    --try:execute immediate ModuleCalculate using to_char(company),salaryList;我试了下也不行,报的错和原来一样。
      

  6.   

    那在liuyi8903的基础上改一下Create Or Replace Procedure pppp(company Varchar2, salaryList Varchar2)As
    ModuleCalculate Varchar2(1000);
    Begin
    ModuleCalculate:='update T_SALARY_SQL set '||replace(ModuleCalculate,'sal','salary')||' where company_id = '''||company||''' and salary_list_cd ='''||salaryList||''';
    execute immediate ModuleCalculate;
      
    End pppp;
      

  7.   

    前面可能有错,没测试
    --tryCreate Or Replace Procedure pppp(company Varchar2, salaryList Varchar2)As
    ModuleCalculate Varchar2(1000);
    Begin
    ModuleCalculate:='update T_SALARY_SQL set '||replace(ModuleCalculate,'sal','salary')||' where company_id = '''||company||''' and salary_list_cd ='''||salaryList||'''';
    execute immediate ModuleCalculate;
      
    End pppp;
      

  8.   

    问题解决了,但不知道是为什么,我这么改一下就OK了:
    execute immediate
        'update T_SALARY_SQL set '||replace(ModuleCalculate,'sal','salary')||
        ' where company_id = :1 and salary_list_cd = :2' 
    using company,salaryList;