我可以在CASE语句中使用WITH子句吗?

时间:2016-06-27 20:06:18

标签: oracle stored-procedures reporting-services with-statement

我有一个使用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子句。我之前没有这样做,所以我不确定。有谁知道吗?

1 个答案:

答案 0 :(得分:0)

我终于使用IF ELSE工作了。

从这里得到了帮助:

https://community.oracle.com/thread/2237472?tstart=0