目前系统的要求就是必须要用存储过程执行update语句
所以我把update tableName set (SETVALUE) where (CONDITION)中的SETVALUE和CONDITION拼好了,发给存储过程拼接SQL并执行 PROCEDURE UPDATETABLE(
V_ERR OUT NUMBER,
v_cursor OUT t_cursor,
SETVALUES IN VARCHAR2,
CONDITIONS IN VARCHAR2
) IS
cSQL VARCHAR2(8000); /*SQLセット用*/
BEGIN
V_ERR := 0;
cSQL := ' UPDATE BOHT0011 SET ';
cSQL := cSQL || SETVALUES;
cSQL := cSQL || ' WHERE ';
cSQL := cSQL || CONDITIONS; EXCEPTION
WHEN OTHERS THEN
V_ERR := SQLCODE;
END UPDATETABLE;但是调用之后发现表没有更新,为啥?拼接的SQL没有问题
所以我把update tableName set (SETVALUE) where (CONDITION)中的SETVALUE和CONDITION拼好了,发给存储过程拼接SQL并执行 PROCEDURE UPDATETABLE(
V_ERR OUT NUMBER,
v_cursor OUT t_cursor,
SETVALUES IN VARCHAR2,
CONDITIONS IN VARCHAR2
) IS
cSQL VARCHAR2(8000); /*SQLセット用*/
BEGIN
V_ERR := 0;
cSQL := ' UPDATE BOHT0011 SET ';
cSQL := cSQL || SETVALUES;
cSQL := cSQL || ' WHERE ';
cSQL := cSQL || CONDITIONS; EXCEPTION
WHEN OTHERS THEN
V_ERR := SQLCODE;
END UPDATETABLE;但是调用之后发现表没有更新,为啥?拼接的SQL没有问题
commit
exception ................ 你只是组织了语句,没有执行。
execute immedite cSQL;
commit;
sql语句
UPDATE BOHT0011 SET SHOHIN_CD1='95001400500000', SU=115 , UPD_YMD=20080513, UPD_TM=144945000 WHERE TORIHIKI_KBN='021' AND KAKUCHO_TORIHIKI_KBN='1' AND HHT_ID='1001' AND HHT_INPUT_NO='10' AND HHT_DATA_REN_NBR='55' AND SOSIN_TM='121314' AND SOSIN_YMD='20080507' AND UPD_YMD=20080513 AND UPD_TM=135242047 ;但是粘贴出来之后单独执行却正确,这是咋回事呢