我很难将字符串传递给一个函数,在该函数中,字符串将在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还是别的什么吗?
编辑:
一般情况下,问题是:当我在转义的一对单引号''中转义单引号''''时,转义单引号''也将被传递给函数。
发布于 2018-07-19 16:02:12
试试OracleParameter p = new OracleParameter(@"'ABC','EEE','DDD','FFF'", val, OracleDbType.VarChar2, ParameterDirection.Input);
这应该是字面上解释字符串,而不改变字符串本身。
请注意,我添加了@符号。
https://stackoverflow.com/questions/51426845
复制相似问题