如何将带引号的字符串传递给oracle过程

时间:2011-11-04 12:23:54

标签: php

我有一个接收字符串的变量:

'BA','RJ','SC'

我需要以这种格式发送到db作为字符串,但我收到错误:

  

PLS-00103:在期待以下其中一项时遇到符号“BA”:),*& | = - +

我打印$ sql以查看值的来源:

BEGIN TWD_WEB_CRM.PESQUISA_CLIENTES(1,''BA','RJ','SC'','132','',:status,:refc); END;

所以,这就是我用PHP传递给程序的方法:

$sql = "BEGIN TWD_WEB_CRM.PESQUISA_CLIENTES(".$codemp.",'".$estados."','".$diac."','".$dian."',:status,:refc); END;";

变量$estados收到:'BA','RJ','SC'

所以,我的问题是:

如何使用php将这种带',的字符串传递给我的程序?

我尝试\但是没有用。

我缺少什么?

任何问题,由我的客人。

感谢。

修改

  BEGIN TWD_WEB_CRM.PESQUISA_CLIENTES
  (

      1,
      ''BA','RJ','SC'',  // this supposed to be 1 field with strings...
      '132',
      '',
      :status,
      :refc
  ); 
  END;

1 个答案:

答案 0 :(得分:1)

在Oracle中,通过将单引号加倍来逃避单引号。这会将完整的逗号分隔字符串视为带有转义引号的一个字符串文字。

''BA'',''RJ'',''SC''

这假设我理解正确,并且您将这些值作为字符串文字传递。

最终,您的查询应如下所示:\

BEGIN TWD_WEB_CRM.PESQUISA_CLIENTES
  (

      1,
      '''BA'',''RJ'',''SC''',  // <-- Doubled quotes inside the quoted string.
      '132',
      '',
      :status,
      :refc
  ); 
  END;