亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP - PL/SQL:如何將數組(作為 Oracle 過程的 OUT 參數)讀入 PHP

PHP - PL/SQL:如何將數組(作為 Oracle 過程的 OUT 參數)讀入 PHP

PHP
三國紛爭 2022-12-23 14:43:12
我的 Oracle 數據庫中有一個過程,其中有一個數組作為輸出參數。在此過程中,我將所有球隊及其積分放入一個數組中。create or replace package pck_tournamentas  type trranking  is record (            position  number       ,    team   VARCHAR2(20)       ,    points  number   );  type taranking is table of trranking;  procedure retrieve_ranking (oparray  out taranking);end pck_tournament;但是當我嘗試用 PHP 調用這個過程時,我總是會得到這樣的錯誤:PLS-00306:調用“RETRIEVE_RANKING”時參數的數量或類型錯誤這是我的 PHP 代碼的一部分:    $out_arr = array();       $stmt = oci_parse($conn, "BEGIN pck_tournament.retrieve_ranking(:taranking); END;");    oci_bind_array_by_name($stmt,":taranking", $out_arr, 10000, 10000, SQLT_CHR );    oci_execute($stmt); 如果我將 OUT 參數更改為 VARCHAR2 以進行測試,我就能夠讀取結果。但如果它是一個數組,我就無法讓它工作。所以問題一定是我使用了錯誤類型的參數來存儲我的 OUT 參數?我搜索了很多網站,但仍然不知道如何進行這項工作。
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

你在 oracle 中擁有的不僅僅是一個數組,它是一個記錄數組......所以 PHP 中的標準數組將無法處理它。

根據 Stack Overflow 上的以下問題,您需要告訴 PHP Type 的外觀

PHP:將變量綁定到表類型輸出參數

所以使用下面的(替換你的類型和模式)

$table_output = oci_new_collection($conn,'some_table_type','schema');

另一個問題也有一個很好的資源鏈接,可以找到更多關于這個的信息。

正如@MT0 所指出的,您還必須更改定義類型的方式。您可以按照建議將其更改為 object 或將其保留為記錄,但主要更改是將聲明移到包之外。

如果它們只在包中定義,PHP 將看不到它們。


查看完整回答
反對 回復 2022-12-23
  • 1 回答
  • 0 關注
  • 105 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號