【发布时间】:2017-03-21 22:29:28
【问题描述】:
首先,我通常使用 MSSQL。但是我在 MSSQL 中有一个存储过程,我现在需要在 Oracle 中使用它,因为我对 Oracle 完全陌生,所以我完全不知道如何正确地做到这一点。
我需要在我的 MS SQL 存储过程中使用用户定义的表类型,因为我在我的存储过程中使用“逻辑”表,我还需要将它们传递给此过程中的动态 sql 语句(使用“物理”表作为变量/参数)。
我已经开始在我之前为另一个函数制作的包中添加 oracle 函数。好像
TYPE resultRec IS RECORD
(
[result columns]
);
TYPE resultTable IS TABLE OF resultRec;
Function MyFunctionName([A LOT PARAMETERS]) RETURN resultTable PIPELINED;
我还描述了表的布局(MSSQL 中的用户定义表类型),我想在这个包头的这个函数中使用它。 到目前为止一切顺利,但现在我真的不知道我必须在哪里声明我的表变量或用户定义的表类型。我还尝试将它们放在包头中,但是如果我尝试在包主体中使用这些表,我正在描述我的函数,Oracle 告诉我们,该表或视图不存在。 我还尝试用它来描述包体或函数块中的表,如下所示:
FUNCTION MyFunctionName
(
[MyParameters]
)
RETURN resultTable PIPELINED is rec resultrec;
TYPE tableVariableA IS TABLE OF tableRecA;
TYPE tableVariableB IS TABLE OF tableRecB;
BEGIN
INSERT INTO tableVariableA
SELECT ColumnA, ColumnB FROM physicalTable WHERE[...];
[A LOT MORE TO DO...]
END;
但在这种情况下,Oracle 也告诉我,它不知道表或视图。 我还尝试了更多的东西,但最后我无法告诉 Oracle 它应该使用什么表...... 我会很感激每一个提示,这有助于我理解 oracle 在这种情况下是如何工作的。非常感谢!
【问题讨论】:
标签: oracle