我有一个使用case语句的Oracle过程,在case中是一个WITH子句。
这就是它的样子。我已经更改了这篇文章的表名和字段。
CREATE OR REPLACE PROCEDURE TST_PROC
(
o_Cursor OUT SYS_REFCURSOR,
p_My_Var IN VARCHAR2
)
AS
v_My_Var VARCHAR2(200);
BEGIN
v_My_Var := p_My_Var;
CASE v_My_Var
WHEN '1'
THEN
OPEN o_Cursor FOR
WITH
SQ_Query AS
(
SELECT * from My_Table1
)
SELECT * from My_Table2 t2,
SQ_Query t1
WHERE t1.id = t2.id;
WHEN '2'
THEN
OPEN o_Cursor FOR
WITH
SQ_Query AS
(
SELECT * from My_Table1
)
SELECT * from My_Table2 t2,
SQ_Query t1
WHERE t1.id = t2.id;
END CASE;
END;
/
这在Oracle中编译没有任何问题。但是,当我刷新SSRS中的数据集时,Visual Studio会抱怨。我想知道是不是因为我在case语句中使用了WITH子句。我之前没有这样做,所以我不确定。有谁知道吗?