我正在使用 PHP + Oracle 开发一个简单的系统。数据库有一个程序,我需要发送一些变量并获得返回。很简单,但我错过了一些东西。
我将显示所有代码,我认为问题出在 $sql 中。
那就是在 Oracle SQL Developer 中运行的过程:
Declare
nAlternativo Number;
nTipo_Custo_Id Number;
Begin
web.karcst_price_api_pkg.Dre_Preco_Bruto_p ( pp_Org_Id => 0
, pp_Item => '6043830'
, pp_Prazo_Ins => 30
, pp_Estado => 'SP'
, pp_Estado_Faturamento => null
, pp_Cidade => 'SAO PAULO'
, pp_Tipo_Frete => 'CIF'
, pp_Preco_Venda_Bruta => 5
, pp_Moeda => 'BRL'
, pp_Embalagem => 'Padrao'
, pp_Preco_Outros_Custos_Com => 0
, pp_Pedido => ''
, pp_Pedido_Item => ''
, pp_Operacao => ''
, pp_Cnpj_Cpf => ''
, pp_Alternativo =>nAlternativo
, pp_Tipo_Custo_Id => nTipo_Custo_Id);
dbms_output.put_line('nAlternativo : '|| nAlternativo);
dbms_output.put_line('nTipo_Custo_Id : '|| nTipo_Custo_Id);
End;
DBMS 输出:
nAlternativo : 3
nTipo_Custo_Id : 1480
PHP代码:
<?php
$conn = oci_connect('-', '-', $MYDB); // CONECTED OK
$script = 'BEGIN web.karcst_price_api_pkg.Dre_Preco_Bruto_p(:pp_Org_Id,:pp_Item,:pp_Prazo_Ins,:pp_Estado,:pp_Estado_Faturamento,:pp_Cidade,:pp_Tipo_Frete,:pp_Preco_Venda_Bruta,:pp_Moeda,:pp_Embalagem,:pp_Preco_Outros_Custos_Com,:pp_Pedido,:pp_Pedido_Item,:pp_Operacao,:pp_Cnpj_Cpf,:pp_Alternativo,:pp_Tipo_Custo_Id); END;';
$stmt = oci_parse($conn, $script) or die('Cannot parse query');
$pp_Org_Id = 0;
$pp_item = '6043830';
$pp_Prazo_Ins = 30;
$pp_Estado = "SP";
$pp_Estado_Faturamento = NULL;
$pp_Cidade = "São Paulo";
$pp_Tipo_Frete = "CIF";
$pp_Preco_Venda_Bruta = 5;
$pp_Moeda = "BRL";
$pp_Embalagem = "Padrao";
$pp_Preco_Outros_Custos_Com = 0;
$pp_Pedido = '';
$pp_Pedido_Item = '';
$pp_Operacao = '';
$pp_Cnpj_Cpf = '';
oci_bind_by_name($stmt, ":pp_Org_Id", $pp_Org_Id) or die ("Crap: $pp_Org_Id");
oci_bind_by_name($stmt, ":pp_Item", $pp_Item) or die ("Crap: $pp_Item");
oci_bind_by_name($stmt, ":pp_Prazo_Ins", $pp_Prazo_Ins) or die ("Crap: $pp_Prazo_Ins");
oci_bind_by_name($stmt, ":pp_Estado", $pp_Estado) or die ("Crap: $pp_Estado");
oci_bind_by_name($stmt, ":pp_Estado_Faturamento", $pp_Estado_Faturamento) or die ("Crap: $pp_Estado_Faturamento");
oci_bind_by_name($stmt, ":pp_Cidade", $pp_Cidade) or die ("Crap: $pp_Cidade");
oci_bind_by_name($stmt, ":pp_Tipo_Frete", $pp_Tipo_Frete) or die ("Crap: $pp_Tipo_Frete");
oci_bind_by_name($stmt, ":pp_Preco_Venda_Bruta", $pp_Preco_Venda_Bruta) or die ("Crap: $pp_Preco_Venda_Bruta");
oci_bind_by_name($stmt, ":pp_Moeda", $pp_Moeda) or die ("Crap: $pp_Moeda");
oci_bind_by_name($stmt, ":pp_Embalagem", $pp_Embalagem) or die ("Crap: $pp_Embalagem");
oci_bind_by_name($stmt, ":pp_Preco_Outros_Custos_Com", $pp_Preco_Outros_Custos_Com) or die ("Crap: $pp_Preco_Outros_Custos_Com");
oci_bind_by_name($stmt, ":pp_Pedido", $pp_Pedido) or die ("Crap: $pp_Pedido");
oci_bind_by_name($stmt, ":pp_Pedido_Item", $pp_Pedido_Item) or die ("Crap: $pp_Pedido_Item");
oci_bind_by_name($stmt, ":pp_Operacao", $pp_Operacao) or die ("Crap: $pp_Operacao");
oci_bind_by_name($stmt, ":pp_Cnpj_Cpf", $pp_Cnpj_Cpf) or die ("Crap: $pp_Cnpj_Cpf");
oci_bind_by_name($stmt, ":pp_Alternativo", $pp_Alternativo, 500) or die ("Crap: pp_Alternativo");
oci_bind_by_name($stmt, ":pp_Tipo_Custo_Id", $pp_Tipo_Custo_Id, 500) or die ("Crap: pp_tipo_custo_id");
oci_execute($stmt);
var_dump($pp_Tipo_Custo_Id); // NULL
oci_free_statement($stmt);
oci_close($conn);
?>
该应用程序没有返回错误,并且绑定变量为空。
问候,