在sql中更新命令有问题

时间:2017-10-11 03:36:55

标签: sql oracle

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

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>

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你的陈述中有明显的拼写错误:

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

设置什么 = .....?

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

然后:因为第二个等号消耗了单引号,所以后面没有引用它。所以:NO被视为绑定变量。纠正语法,Oracle不会问你任何绑定变量。

有了这个问题,请查看Kaushik的答案,以获得更好的方法。