0
나는 case 문을 사용하는 Oracle 프로 시저를 가지고 있으며, case 내부는 WITH 절입니다.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 절을 사용하고 있기 때문에 그것이 맞는지 궁금합니다. 나는 전에 이것을 한 적이 없기 때문에 확실하지 않습니다. 아는 사람 있나요?
비주얼 스튜디오는 무엇 불만이 않습니다
여기에서 도움을 얻었다? 이 절차를 직접 실행할 때 어떤 결과가 있습니까? –'SQL-CASE expressions'을'PL/SQL-CASE STATEMENT'로 혼동했기 때문에이 과정은 컴파일 할 수 없습니다. 그것들은 서로 다른 두 가지이며, 구문은 비슷하지만 다르다. 프로 시저를 다시 컴파일 한 후'SHOW ERRORS'를 실행하면 알 수 있습니다. 팁 : 'END CASE;'대신 'END;'를 사용하십시오. http://www.techonthenet.com/oracle/functions/case.php – krokodilko
Visual Studio에서 @ShannonSeverance를 클릭하면 새로 고침을 클릭합니다. 버튼을 클릭하면 쿼리 매개 변수 정의 대화 상자가 열립니다. 그것은 어딘가에서 오류가있을 때 나타나는 것입니다. – Zolt