gpt4 book ai didi

oracle - Oracle存储过程中的表变量

转载 作者:行者123 更新时间:2023-12-01 05:11:08 25 4
gpt4 key购买 nike

我是 Oracle 的新手,我需要将我的 SQL Server 存储过程转换为 oracle。在 SQL Server 中,我有返回表变量的函数。

执行看起来像:

Declare @tblTSVal table(stValue varchar(500), itemKey varchar(255), props varchar(max))
insert @tblTSVal(stValue, itemKey, props)
select * from dbo.fn_ag_valuesToTable(@tsVal)

我在我的 Oracle 数据库中编写了这个函数并且它正在工作。但我不知道如何在存储过程中声明表变量。

现在我正在尝试这样:

宣言:
type AGValues as object
(
stValue varchar(255),
itemKey varchar(255),
props varchar(8000)
);
type ValTBL is Table of AGValues;

执行:
insert into tblTSVal(stValue, itemKey, props) 
select * from TABLE(dbMis.fn_ag_valuesToTable(tsVal));

这会导致错误:

Table or view does not exist.



请给我一些建议。

最佳答案

ValTBL 就是所谓的嵌套表。要在其中加载数据,请使用 BULK COLLECT 选项。

例子:

SELECT * BULK COLLECT INTO tblTSVal FROM TABLE(dbMis.fn_ag_valuesToTable(tsVal));

但这不是“表或 View 不存在”的根源。错误问题。请检查您的执行权限 dbMis.fn_ag_valuesToTable功能。

将 pl/sql 函数用作表值得阅读有关流水线和并行表函数的信息。
http://docs.oracle.com/cd/E11882_01/appdev.112/e10765/pipe_paral_tbl.htm#ADDCI2140

关于oracle - Oracle存储过程中的表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24817025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com