簡體   English   中英

Oracle SQL:從替換變量創建一個虛擬表

[英]Oracle SQL: create a dumy table from a substitution variable

在 Oracle SQL 中,由於下面顯示的代碼,我可以創建一個虛擬表:

select crca.*
from my_real_table real_table, 
     table(ntde.ENCRYPT_ALL(:inputParam)) enc
where
    ...

我希望能夠在不使用ntde.ENCRYPT_ALL的情況下做同樣的事情,我想做這樣的事情:

select crca.*
from my_real_table real_table, 
     table(:inputParam) enc
where
    ...

它不起作用,我收到此錯誤:

  1. 00000 - “無法訪問來自非嵌套表項的行”
    *原因:嘗試訪問類型未知的項目的行
    解析時間或不是嵌套表類型的
    *操作:使用 CAST 將項目轉換為嵌套表類型

請問你知道怎么做嗎?

正如例外所說,使用CAST

SELECT c.*
FROM   my_real_table r 
       CROSS JOIN TABLE( CAST(:inputParam AS your_collection_type) ) c

這假設:

  • 綁定變量包含一個集合(而不是字符串);

  • 綁定變量是從應用程序傳遞的(這是一個Java 示例);

  • 您已經創建了一個 SQL 集合類型來轉換綁定變量。 例如:

     CREATE TYPE your_collection_type AS TABLE OF NUMBER;

    或者,您可以使用內置集合(或VARRAY ),例如SYS.ODCIVARCHAR2LIST ,而不是創建自己的集合類型。

暫無
暫無

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

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