PHPでストアドプロシージャを実行しようとしましたが、テーブルにデータを挿入して次のエラーメッセージが表示されます。PHPでOracle挿入プロシージャを実行する際に助けが必要
oci_execute()[function.oci実行]:ORA-01843:無効な月 ORA-06512:行1
で、私は自分自身によって私のINSERTクエリを実行してきた、と受け取りませんこのエラー。ここに手順コードがあります。
CREATE OR REPLACE PACKAGE trans_data AS
PROCEDURE INSERT_TRANSACTION_INFO(
var_FName IN TRANSACTION.FIRST_NAME%type,
var_LName IN TRANSACTION.LAST_NAME%type,
var_DOB IN TRANSACTION.DOB%type,
var_InvoiceDate IN TRANSACTION.INVOICE_DATE%type,
var_ServiceCode IN TRANSACTION.SERVICE_CODE%type,
var_BilledAmt IN TRANSACTION.BILLED_AMT%type,
var_SSN IN TRANSACTION.SSN%type,
var_ServiceDate IN TRANSACTION.SERVICE_DATE%type,
var_VendorCode IN TRANSACTION.VENDOR_CODE%type,
var_TransStatus IN TRANSACTION.TRANS_STATUS%type,
var_Comp IN TRANSACTION.COMPANY%type,
var_State IN TRANSACTION.STATE%type,
var_Return OUT VARCHAR2
);
END trans_data;
CREATE OR REPLACE PACKAGE BODY trans_data AS
PROCEDURE INSERT_TRANSACTION_INFO(
var_FName IN TRANSACTION.FIRST_NAME%type,
var_LName IN TRANSACTION.LAST_NAME%type,
var_DOB IN TRANSACTION.DOB%type,
var_InvoiceDate IN TRANSACTION.INVOICE_DATE%type,
var_ServiceCode IN TRANSACTION.SERVICE_CODE%type,
var_BilledAmt IN TRANSACTION.BILLED_AMT%type,
var_SSN IN TRANSACTION.SSN%type,
var_ServiceDate IN TRANSACTION.SERVICE_DATE%type,
var_VendorCode IN TRANSACTION.VENDOR_CODE%type,
var_TransStatus IN TRANSACTION.TRANS_STATUS%type,
var_Comp IN TRANSACTION.COMPANY%type,
var_State IN TRANSACTION.STATE%type,
var_Return OUT VARCHAR2)
IS
BEGIN
INSERT INTO TRANSACTION
(FIRST_NAME, LAST_NAME, DOB, INVOICE_DATE, SERVICE_CODE, BILLED_AMT,
SSN, SERVICE_DATE, VENDOR_CODE, TRANSACTION_ID, TRANS_STATUS, COMPANY,
STATE)
VALUES
(var_FName, var_LName, to_date(var_DOB, 'MM/DD/YY'),
to_date(var_InvoiceDate, 'MM/DD/YY'), var_ServiceCode, var_BilledAmt,
var_SSN, to_date(var_ServiceDate, 'MM/DD/YY'), var_VendorCode,
SEQ_TRANSACTION_ID.nextval, var_TransStatus, var_Comp, var_State);
var_return := 'PASS';
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
var_return := 'DUPE';
WHEN OTHERS THEN
var_return := 'FAIL';
END INSERT_TRANSACTION_INFO;
END trans_data;
私のPHPコードは、私はすべてのフィールドが正しく渡している検証し、前のページからのPOSTを受信して、変数にそれらをバインドします。
//setup insert statement
$stmts = OCI_Parse($c,"BEGIN ucs.trans_data.INSERT_TRANSACTION_INFO(
:var_FName, :var_LName, :var_DOB, :var_InvoiceDate, :var_ServiceCode, :var_BilledAmt, :var_SSN,
:var_ServiceDate, :var_VendorCode, :var_TransStatus, :var_Comp, :var_State, :var_return); END;");
//bind input and output
OCI_Bind_By_Name($stmts, ":var_FName", $FName);
OCI_Bind_By_Name($stmts, ":var_LName", $LName);
OCI_Bind_By_Name($stmts, ":var_DOB", $DOB);
OCI_Bind_By_Name($stmts, ":var_InvoiceDate", $InvoiceDate);
OCI_Bind_By_Name($stmts, ":var_ServiceCode", $ServiceCode);
OCI_Bind_By_Name($stmts, ":var_BilledAmt", $BilledAmt);
OCI_Bind_By_Name($stmts, ":var_SSN", $SSN);
OCI_Bind_By_Name($stmts, ":var_ServiceDate", $ServiceDate);
OCI_Bind_By_Name($stmts, ":var_VendorCode", $VendorCode);
OCI_Bind_By_Name($stmts, ":var_TransStatus", $TransStatus);
OCI_Bind_By_Name($stmts, ":var_Comp", $ComCode);
OCI_Bind_By_Name($stmts, ":var_State", $State);
OCI_Bind_By_Name($stmts, ":var_return", $Return, 4);
//execute statement and add message to Return
oci_execute($stmts);
oci_commit($c);
01/01/11の日付を使用している理由は何ですか?このメッセージは、このメッセージが返されますか?他の情報を投稿する必要がある場合はお知らせください。
これは、 '$ InvoiceDate'と' $ ServiceDate'がエコーしているのでしょうか? – jprofitt