ORA-06550: 第 11 行, 第 30 列:
PLS-00457: 表达式必须是 SQL 类型
----------------------------------------------
DECLARE INTCOUNT INT ;
str1 Varchar(50);
BEGIN
str1 :=InitReg';
execute Immediate 'SELECT COUNT(*) FROM SMLOPT WHERE SCODE=:p1' into INTCOUNT using 'A014006';
IF(INTCOUNT=0) then
execute Immediate 'INSERT INTO SMLOPT(SOPTID,BOPTID,SNAME,LIMITDAY,SEQUENCENUM,CLASSNAME,DUELIMIT,ISACTIVE,SCODE,BFORBID) VALUES (:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10)'
using 7,5,'商品',Null,1,0,str1,1,'A014006','商品';
dbms_output.put_line('1');
ELSE
execute Immediate 'UPDATE SMLOPT SET SOPTID=:p1,BOPTID=:p2,SNAME=:p3,SEQUENCENUM=:p4,CLASSNAME=:p5,ISACTIVE=:p6 WHERE SCODE=:p7 '
using 7,5,'商品',1,InitReg',InitReg',1,'A014006' ;
dbms_output.put_line('2');
END if;
end ;
PLS-00457: 表达式必须是 SQL 类型
----------------------------------------------
DECLARE INTCOUNT INT ;
str1 Varchar(50);
BEGIN
str1 :=InitReg';
execute Immediate 'SELECT COUNT(*) FROM SMLOPT WHERE SCODE=:p1' into INTCOUNT using 'A014006';
IF(INTCOUNT=0) then
execute Immediate 'INSERT INTO SMLOPT(SOPTID,BOPTID,SNAME,LIMITDAY,SEQUENCENUM,CLASSNAME,DUELIMIT,ISACTIVE,SCODE,BFORBID) VALUES (:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10)'
using 7,5,'商品',Null,1,0,str1,1,'A014006','商品';
dbms_output.put_line('1');
ELSE
execute Immediate 'UPDATE SMLOPT SET SOPTID=:p1,BOPTID=:p2,SNAME=:p3,SEQUENCENUM=:p4,CLASSNAME=:p5,ISACTIVE=:p6 WHERE SCODE=:p7 '
using 7,5,'商品',1,InitReg',InitReg',1,'A014006' ;
dbms_output.put_line('2');
END if;
end ;
DECLARE INTCOUNT INT ;
str1 Varchar(50);
BEGIN
str1 :=InitReg';
execute Immediate 'SELECT COUNT(*) FROM SMLOPT WHERE SCODE=:p1' into INTCOUNT using 'A014006';
IF(INTCOUNT=0) then
execute Immediate 'INSERT INTO SMLOPT(SOPTID,BOPTID,SNAME,LIMITDAY,SEQUENCENUM,CLASSNAME,DUELIMIT,ISACTIVE,SCODE,BFORBID) VALUES (:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10)'
using 7,5,'商品',Null,1,0,str1,1,'A014006','商品';
dbms_output.put_line('1');
ELSE
execute Immediate 'UPDATE SMLOPT SET SOPTID=:p1,BOPTID=:p2,SNAME=:p3,SEQUENCENUM=:p4,CLASSNAME=:p5,ISACTIVE=:p6 WHERE SCODE=:p7 ' using 7,5,'商品',1,'InitReg',1,'A014006' ;
dbms_output.put_line('2');
END if;
end ;
str1 Varchar(50);
BEGIN
str1 :='InitReg';
execute Immediate 'SELECT COUNT(*) FROM SMLOPT WHERE SCODE=:p1' into INTCOUNT using 'A014006';
IF(INTCOUNT=0) then
execute Immediate 'INSERT INTO SMLOPT(SOPTID,BOPTID,SNAME,LIMITDAY,SEQUENCENUM,CLASSNAME,DUELIMIT,ISACTIVE,SCODE,BFORBID) VALUES (:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10)'
using 7,5,'商品',Null,1,0,str1,1,'A014006','商品';
dbms_output.put_line('1');
ELSE
execute Immediate 'UPDATE SMLOPT SET SOPTID=:p1,BOPTID=:p2,SNAME=:p3,SEQUENCENUM=:p4,CLASSNAME=:p5,ISACTIVE=:p6 WHERE SCODE=:p7 '
using 7,5,'商品',1,InitReg',InitReg',1,'A014006' ;
dbms_output.put_line('2');
END if;
end ;
那怎么使参数为null呢?因为是动态的