代码之家  ›  专栏  ›  技术社区  ›  Jimenemex

使用转义单引号调用函数

  •  0
  • Jimenemex  · 技术社区  · 6 年前

    我无法将字符串传递给函数,该函数将在 IN 条款。

    字符串如下:

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

    以及 pl/sql函数中的子句如下所示:

    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 回复  |  直到 6 年前
        1
  •  1
  •   SJ10    6 年前

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