我的程序是这样的:v_insert_sqltemp:='insert into test(ID,NAME,PROGRAM_DESC,START_DATE,END_DATE,ARGUMENT1,ARGUMENT2,STATUS) values(98,'test1','测试用第一个存储过程',sysdate,sysdate,'aaaa','bbbb','0')
';
execute   immediate ''||v_insert_sqltemp||'';
commit;运行提示缺失逗号……
我把v_insert_sqltemp拷贝出来执行是可以的。

解决方案 »

  1.   

    看看
    v_insert_sqltemp:='insert into test(ID,NAME,PROGRAM_DESC,START_DATE,END_DATE,ARGUMENT1,ARGUMENT2,STATUS) values(98,'test1','测试用第一个存储过程',sysdate,sysdate,'aaaa','bbbb','0') 
    '; 这个,里面单引号乱套了
      

  2.   

    如果是oracle10g,用这个方法
    v_insert_sqltemp:=q'[insert into test(ID,NAME,PROGRAM_DESC,START_DATE,END_DATE,ARGUMENT1,ARGUMENT2,STATUS) values(98,'test1','测试用第一个存储过程',sysdate,sysdate,'aaaa','bbbb','0')]'; execute immediate v_insert_sqltemp;
    commit;
      

  3.   


    我这样试过了,提示无效的sql语句了。。是10g
      

  4.   


    declare
      v_insert_sqltemp varchar2(2000);
    begin
      v_insert_sqltemp:='insert into test(ID,NAME,PROGRAM_DESC,START_DATE,END_DATE,ARGUMENT1,ARGUMENT2,STATUS) values(98,'||'''test1'''||','||'''²âÊÔÓõÚÒ»¸ö´æ´¢¹ý³Ì'''||','''||sysdate||''','''||sysdate||''','||'''aaaa'''||','||'''bbbb'''||','||'''0'')';
      dbms_output.put_line(v_insert_sqltemp);
      execute  immediate v_insert_sqltemp; 
      commit;
    end;
      

  5.   

    上边有华文乱码,用这个测试一下
    declare
      v_insert_sqltemp varchar2(2000);
    begin
      v_insert_sqltemp:='insert into test(ID,NAME,PROGRAM_DESC,START_DATE,END_DATE,ARGUMENT1,ARGUMENT2,STATUS) values(98,'||'''test1'''||','||'''testing'''||','''||sysdate||''','''||sysdate||''','||'''aaaa'''||','||'''bbbb'''||','||'''0'')';
      dbms_output.put_line(v_insert_sqltemp);
      execute  immediate v_insert_sqltemp; 
      commit;
    end;
      

  6.   


    其实这是我写死的是这样,values里面的都是拼sql拼出来的。要怎么做呢?
    远程序是这样的;v_insert_sqltemp:=v_insert_sqlstarttemp||v_insert_sqlendtemp||request_id||','''||s_proname||''','''||s_prodesc||''','||s_start_date||','||s_start_date||v_sqltemp||',''0'')';
        
      

  7.   

    execute  immediate ''||v_insert_sqltemp||''; 这里外面用不着加引号了
      

  8.   


    都已经贴给过你了,这个破需求,变态。搞了两天了。
    v_insert_sqltemp:=v_insert_sqlstarttemp||v_insert_sqlendtemp||request_id||','''||s_proname||''','''||s_prodesc||''','||s_start_date||','||s_start_date||v_sqltemp||',''0'')'; 
    这里面的都是变量。并且运行的时候已经打印出
    v_insert_sqltemp:='insert into test(ID,NAME,PROGRAM_DESC,START_DATE,END_DATE,ARGUMENT1,ARGUMENT2,STATUS) values(98,'test1','测试用第一个存储过程',sysdate,sysdate,'aaaa','bbbb','0') 但是就是提示缺少逗号
      

  9.   

    呵呵。搞定了,原来是那个时间的格式有问题。。我先to_char,然后to_date.插入。ok!
      

  10.   


    你这里的sysdate怎么会有问题?
      

  11.   

    v_insert_sqltemp:='insert into test(ID,NAME,PROGRAM_DESC,START_DATE,END_DATE,ARGUMENT1,ARGUMENT2,STATUS)values(98,'||chr(39)||test1||chr(39)||','||chr(39)||'测试用第一个存储过程'||chr(39)||',sysdate,sysdate,'||chr(39)||'aaaa'||chr(39)||','||chr(39)||'bbbb'||chr(39)||','||chr(39)||'0'||chr(39)||')'; 
    这样测试一下,你!
      

  12.   

    'test1'改为''test1'' 其他的也一样