使用replace替换存储过程调用中的单引号

时间:2017-11-10 19:38:32

标签: sql db2

我有一个对存储过程(db2)的调用,如果一个字符串中有一个单引号,它就会出现错误,并且#34; Invalid Token"。我知道解决方案是将单引号替换为两个单引号。我正在尝试使用"替换"并且得到错误"令牌S无效"。这是"取代"应该用吗?

CALL my_store_proc ('xyz', 'US', 'MAIL', replace('Joe's',''','''''), 'zipcode' )

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要在文字中引用引号,即:

CALL my_store_proc ('xyz', 'US', 'MAIL', replace('Joe''s',''',''''') , 'zipcode' )

仅用于语法,但根据您的意图,您可能需要更多引号:

CALL my_store_proc ('xyz', 'US', 'MAIL',  replace('Joe''s','''',''''''), 'zipcode' )

答案 1 :(得分:0)

你说这个程序错了......

您没有提到您调用存储过程的位置/方式。但ODBC,JDBC等都有一个方法,允许您从存储过程调用的变量中设置参数值。

使用其中一种方法而不是简单地构建字符串是首选的调用方法。