我在将字符串传递到要在IN
子句中使用该字符串的函数时遇到麻烦。
字符串如下:
OracleParameter p = new OracleParameter("'ABC','EEE','DDD','FFF'", val, OracleDbType.VarChar2, ParameterDirection.Input);
和PL / SQL函数中的IN
子句是这样的:
sqlString := 'WHERE SomeCd IN (' || in_Codes || ')'
因此,当函数执行时,您将获得以下子句:
WHERE someCd IN ('ABC','EEE','DDD','FFF')
问题是,我无法在我的IDE中进行真正的测试,因为要传递此信息,我必须使用转义序列来转义单引号。这导致字符串看起来像这样:
'''ABC'',''EEE'',''DDD'',''FFF'''
被解析为''ABC'',''EEE'',''DDD'',''FFF''
q'['ABC','EEE','DDD','FFF']'
哪个以q'['ABC','EEE','DDD','FFF']'
的形式发送到函数。
由于字符串格式现在不正确,因此这两种格式均无法正常工作。
如何以正确的格式将此列表传递给函数?我必须使用varray之类的东西吗?
编辑:
通常的问题是:当我在一对转义的单引号''
中转义一个单引号''''
时,转义的单引号''
也被传递给函数
答案 0 :(得分:1)
尝试
OracleParameter p = new OracleParameter(@"'ABC','EEE','DDD','FFF'", val, OracleDbType.VarChar2, ParameterDirection.Input);
这应该从字面上解释字符串,而无需更改字符串本身。
请注意,我添加了@符号。