【发布时间】:2015-03-09 10:14:51
【问题描述】:
我正在尝试创建一个插入行并在成功时返回行数的函数。这是我的代码。
create or replace FUNCTION "FUNCINSERTROW"
(V_PARAM IN NVarChar2
,V_PARAM2 IN NVarChar2
,V_PARAM6 IN NVarChar2
,V_PARAM4 IN NVarChar2
,V_PARAM5 IN NVarChar2
,V_PARAM6 IN NVarChar2
,V_PARAM7 IN NVarChar2
,V_PARAM8 IN NVarChar2
,V_PARAM9 IN NVarChar2
,V_PARAM10 IN NVarChar2
,V_PARAM11 IN NVarChar2
,V_PARAM12 IN Number
,V_PARAM13 IN NVarChar2
,V_PARAM14 IN NVarChar2
,V_PARAM15 IN NVarChar2
,V_PARAM16 IN NVarChar2
,V_PARAM17 IN NVarChar2
,V_PARAM18 IN NVarChar2
,V_PARAM19 IN NVarChar2
,V_PARAM20 IN NVarChar2
,V_PARAM21 IN NVarChar2
,V_PARAM22 IN NVarChar2
,V_PARAM23 IN NVarChar2
,V_PARAM24 IN NVarChar2
,V_PARAM25 IN NVarChar2
,V_PARAM26 IN NVarChar2
,V_PARAM27 IN NVarChar2
,V_PARAM28 IN NVarChar2)
RETURN NUMBER AS
BEGIN
DECLARE
v_requete varchar2(5000);
BEGIN
v_requete := 'INSERT INTO TABLE (PARAM,PARAM2,PARAM3,PARAM4,PARAM5,PARAM6,' ||
'PARAM7,PARAM8,PARAM9,PARAM10,PARAM11,PARAM12,PARAM13,PARAM14,PARAM15,PARAM16,PARAM17,PARAM18,PARAM19,' ||
'PARAM20,PARAM21,PARAM22,PARAM23,PARAM24,PARAM25,PARAM26,PARAM27,PARAM28)' ||
'VALUES ('||V_PARAM||','||V_PARAM2||','||V_PARAM3||','||V_PARAM4||','||V_PARAM5||','||V_PARAM6||','||V_PARAM7||','||V_PARAM8||
','||V_PARAM9||','||V_PARAM10||','||V_PARAM11||','||V_PARAM12||','||V_PARAM13||','||V_PARAM14||','||V_PARAM15||','||V_PARAM16||
','||V_PARAM17||','||V_PARAM18||','||V_PARAM19||','||V_PARAM20||','||V_PARAM21||','||V_PARAM22||','||V_PARAM23||','||V_PARAM24||
','||V_PARAM25||','||V_PARAM26||','||V_PARAM27||','||V_PARAM28||')';
execute immediate v_requete;
RETURN SQL%ROWCOUNT;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20996,SQLERRM || ' - ANNUDATA:' || v_requete);
END;
END FUNCINSERTROW;
这是它给我的错误。
ORA-20996: ORA-00917: missing comma - ANNUDATA:INSERT INTO Table (PARAM,PARAM2,PARAM3,PARAM4,PARAM5,PARAM6,PARAM7,PARAM8,PARAM9,PARAM10,PARAM11,PARAM12,PARAM13,PARAM14,PARAM15,PARAM16,PARAM17,PARAM18,PARAM19,PARAM20,PARAM21,PARAM22,PARAM23,PARAM24,PARAM25,PARAM26,PARAM27,PARAM28)VALUES (t,t,t,t,t,16,PO,t,t,t,t,7740,NO,DO,t,t,TEST,2C,t,t,t,Ben,t,t,t,997,t,t)
我读了很多帖子。大多数人忘记了右括号,但我不认为这是我的情况。我错过了什么?
【问题讨论】:
-
我想知道你为什么会遇到这个错误代码,我正在构建架构没有错误。
-
您插入语句的 varchar 值没有括起来的引号 - 这可能是一个问题
-
你认为我应该添加这样的简单引号吗? '''||V_TELEPHONE_F||'''
-
你做动态SQL有什么原因吗?简单的
INSERT也一样。 -
网站仍然会通过函数内部的简单
INSERT语句知道插入是否成功。就做BEGIN INSERT INTO TABLE blah blah... END;
标签: sql oracle plsql oracle11g