通过转义单引号调用函数
Calling a function with escaping a single quote
我无法将字符串传递给将在 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 或其他东西?
编辑:
一般的问题是:当我在一对转义的单引号 ''''
中转义单引号 ''
时,转义的单引号 ''
被传递到功能也。
试试看
OracleParameter p = new OracleParameter(@"'ABC','EEE','DDD','FFF'", val, OracleDbType.VarChar2, ParameterDirection.Input);
这应该在不更改字符串本身的情况下按字面解释字符串。
注意我添加了@符号。
我无法将字符串传递给将在 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 或其他东西?
编辑:
一般的问题是:当我在一对转义的单引号 ''''
中转义单引号 ''
时,转义的单引号 ''
被传递到功能也。
试试看
OracleParameter p = new OracleParameter(@"'ABC','EEE','DDD','FFF'", val, OracleDbType.VarChar2, ParameterDirection.Input);
这应该在不更改字符串本身的情况下按字面解释字符串。
注意我添加了@符号。