簡體   English   中英

是否可以將行類型表從Java傳遞到oracle存儲過程?

[英]Is it possible to pass a table of rowtype from java to an oracle stored procedure?

我在oracle中得到了這種類型:

TYPE "RequestTable" IS TABLE OF "Requests"%ROWTYPE;

我已將此類型用作某些存儲過程的IN(或out)參數,例如:創建或替換PROCEDURE

"RegisterRequestsBulk" 
(
  Par_RequestsBulk IN "TableTypes"."RequestTable"  
, ErrorCodeTable OUT "TableTypes"."ErrorCodeTable"
) AS 
BEGIN
...

現在,我需要從Java調用此SP。 我應該如何傳遞此類參數?

注釋中的鏈接是執行此操作的“正確”方法。 但是您可以在聲明開始結束塊中動態創建一個表,並將其傳遞給proc調用。 在Java中,創建一個像這樣的字符串

  declare 
    lvTable RequestTable; 
    lvError ErrorCodeTable;
  begin 
      select col1, col2 
      BULK COLLECT INTO lvTable          
      from ( 
     ****
     java loop to create lvTable in java string 
      SELECT col1, col2 -- row 1
       FROM dual
      union all          
      SELECT col1, col2 -- row n
       FROM dual
     ****
     );
     RegisterRequestsBulk(lvTable, lvError); 
     open :? for select * from table(lvError); 
  end;

然后,您可以使用此構造的字符串調用proc,並在游標中預期錯誤。 http://docs.oracle.com/cd/A84870_01/doc/java.816/a81354/samapp2.htm

希望有道理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM