【发布时间】:2017-05-04 01:18:53
【问题描述】:
我希望能够在 ODP.Net 中运行多个以 select 语句结尾的查询。我正在清除、更新然后从表中选择。
举个例子:
BEGIN
DELETE FROM StagingTable;
INSERT INTO StagingTable (Col1,Col2,Col3)
SELECT Value1,Value2,Value3
FROM MainTable;
UPDATE StagingTable
SET Col1 = FUNCTION(Col1);
END;
/
SELECT * FROM StagingTable;
这适用于 SQL Developer,但不适用于 ODP.Net。我收到此错误:
ORA-06550:第 26 行,第 1 列: PLS-00103:遇到符号“/”
但如果我删除 / 我得到:
ORA-06550:第 27 行,第 1 列: PLS-00103:遇到符号“SELECT”
我想做的事是否可能?我不想创建一个包并开始创建类型等等。理想情况下,我想通过.Net 做到这一点。
【问题讨论】:
-
你不能那样做。要么将所有内容放在存储过程中并将选择作为游标返回,要么分成两次执行。
-
正如 OldProgrammer 建议的那样,您使用的是 SQL*Plus 语法(反斜杠),这对于 SQL Developer 和类似工具来说很好,但不适用于编程接口。您可以使用绑定变量从 ODP.NET 调用匿名 PLSQL。您可以将整个内容放入一个匿名 PL/SQL 块中,并在最后绑定到 REF CURSOR。然后从中获取。
-
这是一些示例代码,显示从 odp.net 调用匿名 plsql 块,然后绑定到 ref 游标:oracle.com/partners/campaign/o16odpnet-087852.html