2017-10-26 1 views
-2

다음은DB2에서 리턴 커서를 매개 변수화 할 수 있습니까?

CREATE OR REPLACE PROCEDURE ds_grp_heatmap_product_test() 
SPECIFIC ds_grp_heatmap_product_test 
LANGUAGE SQL 
MODIFIES SQL DATA 
DYNAMIC RESULT SETS 1 
BEGIN 
     DECLARE c_hm_report(v_sal INTEGER)      
     CURSOR WITH RETURN FOR 
     select * 
     from emp where salary<v_sal; 
    open c_hm_report(2000); 
END; 

이 코드는 컴파일 오류를 내가 뭘 잘못 어떤 생각을주고 내 코드입니다.

+0

그것의'DB2' 또는'PLSQL'은 모두 – XING

+0

입니다. DB2의 plsql입니다. –

+0

'PLSQL'은 '오라클'의 소유입니다. 질문의 이름을 'DB2의 프로 시저'로 바꾸고'PLSQL' 태그를 제거해야합니다. – XING

답변

1

코드는 SQLPL (PLSQL과 별개)입니다. Db2 서버 버전 및 구성에 따라 PLSQL (Db2의 Oracle 호환 모드)을 작성할 수도 있습니다. 위의 구문이 SQLPL에 유효하지 않기 때문에 컴파일 오류가 발생합니다. 이 경우 매개 변수가 저장 프로 시저의 입력으로 공급되고 필요에 따라 유형을 조정하거나 다른 수단을 통해 변수 v_sal을 설정할 수 있습니다 :

--#SET TERMINATOR @ 
CREATE OR REPLACE PROCEDURE ds_grp_heatmap_product_test (in v_sal integer) 
SPECIFIC ds_grp_heatmap_product_test 
LANGUAGE SQL 
MODIFIES SQL DATA 
DYNAMIC RESULT SETS 1 
BEGIN 
     DECLARE c1 CURSOR WITH RETURN FOR 
     select * 
     from emp where salary < v_sal; 
    open c1; 
END 
@ 

아래의 코드는 당신이 무엇을 추구 수 있습니다

관련 문제