Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ORA-00917:PLSQL中缺少逗号_Sql_Oracle - Fatal编程技术网

ORA-00917:PLSQL中缺少逗号

ORA-00917:PLSQL中缺少逗号,sql,oracle,Sql,Oracle,我编写了一个PL SQL脚本,将存储在数组中的值添加到临时表中。我使用executeimmediate在循环中执行insert查询 我已经检查了单引号的数量和逗号的数量,它们已经关闭。不过,我还是得到了错误代码 ORA-00917:缺少逗号 这就是我得到的错误 错误报告: ORA-00917:缺少逗号 ORA-06512:在第14行 91700000-“缺少逗号” 我正在oracle机器上工作。将您的插入语句包装在q'[]'中,然后再试一次 execute immediate q'[insert

我编写了一个PL SQL脚本,将存储在数组中的值添加到临时表中。我使用executeimmediate在循环中执行insert查询

我已经检查了单引号的数量和逗号的数量,它们已经关闭。不过,我还是得到了错误代码

ORA-00917:缺少逗号

这就是我得到的错误

错误报告:

ORA-00917:缺少逗号 ORA-06512:在第14行 91700000-“缺少逗号”


我正在oracle机器上工作。

将您的
插入
语句包装在
q'[]'
中,然后再试一次

execute immediate q'[insert into tmp_ref_lc_pc_cods values('||lid(i)||','||pc(i)||','||Y||',89987,'||sysdate||')]';  
更新

建议使用绑定变量。你可以试试下面的方法。它正在为我工作并插入数据

declare
   type post_CODS IS VARRAY(34) OF NUMBER(20); 
   type locality_ID IS VARRAY(34) OF NUMBER(9); 
   pc post_CODS; 
   Y varchar2(1);
   lid locality_ID; 
   total integer;
begin
   Y := 'Y'; 
   lid := locality_ID(2380,3785,8710,17895,20345,24630,26814,28525,29130,31025,31265,32445,36940,40590,54290,83775,83780,83785,83790,83795,88483,93480,94560,96670,1000524,1000628,1000738,1000857,1000988,1001103,1001466,1001575,1001707,1001744);
   pc := post_CODS(2822,2739,2822,2372,2817,4314,4300,4726,4300,4884,4314,4314,4300,5719,3026,4314,4314,4314,4314,4314,873,2582,2817,4314,5723,5440,2083,2575,873,2372,5440,5440,5715,5440);
   total := lid.count;
   FOR i in 1 .. total LOOP 
      execute immediate q'[insert into tmp_ref_lc_pc_cods values(:var1,:var2,'Y',89987,sysdate)]' using lid(i),pc(i);  
   END LOOP; 
END;

尝试执行immediate时的一个好技巧是确保创建的语句格式正确,打印您编写的代码会显示Y不在撇号内

insert into tmp_ref_lc_pc_cods values(2380,2822,Y,89987,23-APR-19)
因此,在动态创建代码时,请确保创建的所有字符串都有适当数量的撇号

dbms_output.put_line('insert into tmp_ref_lc_pc_cods values('||lid(i)||','||pc(i)||','''||Y||''',89987,'||sysdate||')');

可能您忘记将
声明
作为第一条语句?编辑时出现问题,对此表示抱歉…请使用
以_char(sysdate)
工作?
“|Y | |”
dbms_output.put_line('insert into tmp_ref_lc_pc_cods values('||lid(i)||','||pc(i)||','''||Y||''',89987,'||sysdate||')');