[英]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
...
它不起作用,我收到此錯誤:
- 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.