更新 sql 中的命令有问题



>我在表格中有以下详细信息

GEMS@TEST1>select BUILTIN_ARGUMENTS from FND_FORM_CUSTOM_ACTIONS WHERE (RULE_ID = 2243);
BUILTIN_ARGUMENTS
--------------------------------------------------------------------------------
='http://prod.client.com:3001/ords/f?p=1:2:::NO::P_ORDER_HEADER_ID,P_SESSION
_ID:'||${item.ORDER.HEADER_ID.VALUE}||','||${ps.db_session_id.value}

为了需要,我必须将此"prod.client.com:3001"更新为

"test1-scan.client.com"

当我在下面执行时出现错误

GEMS@TEST1>update FND_FORM_CUSTOM_ACTIONS set = '='http://test1-scan.client.com/ords/f?p=1:2:::NO::P_ORDER_HEADER_ID,P_SESSION
_ID:'||${item.ORDER.HEADER_ID.VALUE}||','||${ps.db_session_id.value}' WHERE (RULE_ID = 2243);
SP2-0552: Bind variable "NO" not declared.    
GEMS@TEST1>

我知道我可能不得不使用转义字符或声明变量,但没有得到线索,因为我不太擅长编码。

在这种情况下使用 REPLACE 更好。

UPDATE fnd_form_custom_actions
SET    builtin_arguments = REPLACE (builtin_arguments, 'prod.client.com:3001',
                                  'test1-scan.client.com')
WHERE   rule_id = 2243 ;  

你的陈述中有明显的错别字:

set = '='http://test1-scan.client.com/ords/f?p=1:2:::NO  [.......]

设置什么 = .....?

然后:单引号中的第二个等号是什么?(或...我明白了 - 你的意思是分配的字符串中的单引号吗?您必须输入两个单引号来表示字符串中的一个单引号!

然后:由于第二个等号使用单引号,因此后面的内容不被引用。因此:NO被视为绑定变量。更正语法,Oracle 不会询问您任何绑定变量。

修复后,看看Kaushik的答案,以获得更好的方法。

最新更新