【发布时间】:2018-05-01 04:18:16
【问题描述】:
我需要将发票号发送给第三方(Oracle 数据库),他们会回应我尝试与他们建立连接的相同结果,我得到了成功的结果,但现在我需要发送 SQL查询以获得回复,但不幸的是我不知道如何发送。 这是我使用的连接和查询代码:-
<?php
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 83.111.41.30)(PORT = 1536)))(CONNECT_DATA=(SID=TEST)))" ;
if($c = OCILogon("XXWEBSITE", "xxwebsite", $db))
{
echo 'success';
$query = "BEGIN
P_INV_NUMBER := '34499';
P_INV_NUM := NULL;
P_UNIT_NO := NULL;
P_CUST_NAME := NULL;
P_INV_DATE := NULL;
P_TRANS_TYPE := NULL;
P_CUST_NO := NULL;
P_OUTSTANDING_AMOUNT := NULL;
L_ERROR := NULL;
APPS.XX_AR_CUST_OS_BAL_PKG.XX_AR_CUST_OS_BAL_PROC ( P_INV_NUMBER, P_INV_NUM, P_UNIT_NO, P_CUST_NAME, P_INV_DATE, P_TRANS_TYPE, P_CUST_NO, P_OUTSTANDING_AMOUNT, L_ERROR );
COMMIT;
END;";
$stid = oci_parse($c, $query);
$check = oci_execute($stid);
print_r($check);
OCILogoff($c);
}
else
{
$err = OCIError();
echo "Connection failed.";
}
?>
他们要求发送的查询是:-
DECLARE
P_INV_NUMBER VARCHAR2(32767);
P_INV_NUM VARCHAR2(32767);
P_UNIT_NO VARCHAR2(32767);
P_CUST_NAME VARCHAR2(32767);
P_INV_DATE DATE;
P_TRANS_TYPE VARCHAR2(32767);
P_CUST_NO NUMBER;
P_OUTSTANDING_AMOUNT NUMBER;
L_ERROR VARCHAR2(32767);
BEGIN
P_INV_NUMBER := '34499';
P_INV_NUM := NULL;
P_UNIT_NO := NULL;
P_CUST_NAME := NULL;
P_INV_DATE := NULL;
P_TRANS_TYPE := NULL;
P_CUST_NO := NULL;
P_OUTSTANDING_AMOUNT := NULL;
L_ERROR := NULL;
APPS.XX_AR_CUST_OS_BAL_PKG.XX_AR_CUST_OS_BAL_PROC ( P_INV_NUMBER, P_INV_NUM, P_UNIT_NO, P_CUST_NAME, P_INV_DATE, P_TRANS_TYPE, P_CUST_NO, P_OUTSTANDING_AMOUNT, L_ERROR );
COMMIT;
END;
如何发送这些参数我尝试了一种方法,但我不知道它是否正确。我需要发送上述内容以获得结果我该怎么做?
【问题讨论】:
-
你试试你的代码吗?发生了什么?
-
顺便说一句,这不是查询。同样在 PL/SQL 中,标量变量默认以 null 开头,因此
:= NULL分配没有任何作用。您可以通过在初始化时分配一个值来保存另一行。并且没有要求以大写形式编写 PL/SQL - 它不是 COBOL,也不是 1974 年。