使用动态参数参考 SQL
parameter reference using dynamic SQL
以下语句混合使用绑定变量、常量和 Oracle 关键字进行插入。 ABC REVIEW
和 N
是要插入的实际值。
l_sql :='INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,ABC REVIEW,N,SYSDATE)';
这是使用动态参数引用的正确方法吗SQL?不需要额外的括号吗?
只需转义实际字符串值周围的引号:
l_sql :='INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,''ABC REVIEW'',''N'',SYSDATE)';
ABC REVIEW and N is the actual value to be inserted.
如果您不在 ' '(引号)中包含文字,则 Oracle 会将它们视为变量和期望值。在您的情况下,这是导致错误的原因。 @user7294900 建议的绝对是正确的解决方案,但是它需要高精度,同时引用有时会导致问题的引号。 Oracle 引入了 q'[
来处理这种情况,您只需将语句放在 q'[
中,oracle 就会处理引号。见下文:
l_sql :=q'[INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,'ABC REVIEW','N',SYSDATE)]';
在 http://www.oracle-developer.net/display.php?id=311
阅读有关 q'
的更多信息
我意识到它可以使用管道连接。
l_sql='INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME,DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,'|| 'ABC REVIEW'|| ','|| 'N'|| ',SYSDATE);
以下语句混合使用绑定变量、常量和 Oracle 关键字进行插入。 ABC REVIEW
和 N
是要插入的实际值。
l_sql :='INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,ABC REVIEW,N,SYSDATE)';
这是使用动态参数引用的正确方法吗SQL?不需要额外的括号吗?
只需转义实际字符串值周围的引号:
l_sql :='INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,''ABC REVIEW'',''N'',SYSDATE)';
ABC REVIEW and N is the actual value to be inserted.
如果您不在 ' '(引号)中包含文字,则 Oracle 会将它们视为变量和期望值。在您的情况下,这是导致错误的原因。 @user7294900 建议的绝对是正确的解决方案,但是它需要高精度,同时引用有时会导致问题的引号。 Oracle 引入了 q'[
来处理这种情况,您只需将语句放在 q'[
中,oracle 就会处理引号。见下文:
l_sql :=q'[INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,'ABC REVIEW','N',SYSDATE)]';
在 http://www.oracle-developer.net/display.php?id=311
阅读有关q'
的更多信息
我意识到它可以使用管道连接。
l_sql='INSERT INTO EMP
(BUSINESS_DATE,GROUP_NAME,DELETED,UPDATE_DATE) VALUES
(:BIZ_DATE,'|| 'ABC REVIEW'|| ','|| 'N'|| ',SYSDATE);