调用带有转义单引号的函数

时间:2018-07-19 15:41:40

标签: c# oracle plsql odp.net

我在将字符串传递到要在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之类的东西吗?

编辑:

通常的问题是:当我在一对转义的单引号''中转义一个单引号''''时,转义的单引号''也被传递给函数

1 个答案:

答案 0 :(得分:1)

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

这应该从字面上解释字符串,而无需更改字符串本身。

请注意,我添加了@符号。