通过转义单引号调用函数

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 中真正测试它,因为为了传递它,我必须使用转义序列来转义单引号。这导致字符串看起来像这样:

  1. '''ABC'',''EEE'',''DDD'',''FFF'''

    被解析为 ''ABC'',''EEE'',''DDD'',''FFF''

  2. q'['ABC','EEE','DDD','FFF']'

    作为 q'['ABC','EEE','DDD','FFF']' 发送到函数。

这两个都不能正常工作,因为字符串的格式现在是错误的。

如何以正确的格式将此列表传递给函数?我是否必须使用 varray 或其他东西?

编辑:

一般的问题是:当我在一对转义的单引号 '''' 中转义单引号 '' 时,转义的单引号 '' 被传递到功能也。

试试看 OracleParameter p = new OracleParameter(@"'ABC','EEE','DDD','FFF'", val, OracleDbType.VarChar2, ParameterDirection.Input);

这应该在不更改字符串本身的情况下按字面解释字符串。

注意我添加了@符号。