2014-06-18 2 views
0

저는 Oracle 초보자이며 며칠 전부터 사용하기 시작했습니다.오라클 프로 시저에서 아무 것도 반환하지 않는 방법

이 절차를 SQL Server에서 Oracle로 변환하고 싶습니다. Essensially 아무것도 반환하지 않는 프로 시저를 호출하려면 ... 따라서 내 응용 프로그램을 변경하지 마십시오.

create PROCEDURE [dbo].[LC_UNBOOKTRADE] 
    @EXEID VARCHAR(50), 

AS 
SELECT '' 

GO 

답변

2

먼저 오라클의 절차는 아무것도 반환하지 않으며 반환 할 수 없습니다. 함수는 무언가를 반환합니다. 프로 시저에는 out 매개 변수가있을 수 있습니다.

둘째, 12.1을 사용하지 않는 한 SQL Server에서와 같이 select 문을 실행하여 암시 적으로 커서를 암시 적으로 반환 할 수 없습니다. 오라클은 이런 종류의 관점을 사용하는 것이 훨씬 더 일반적입니다.

세 번째로 Oracle에서는 empty string is NULL이므로 NULL이 아닌 빈 문자열이 반환 될 것으로 예상하는 코드가 있으면이를 변경해야합니다.

잠재적으로,이 같은 당신이 당신의 프로 시저를 호출하는 데 사용하는 코드에 따라 가장 가까운 해당 코드

CREATE OR REPLACE PROCEDURE lc_unbookTrade( 
    p_exeid IN VARCHAR2, 
    p_rc OUT SYS_REFCURSOR) 
AS 
BEGIN 
    OPEN p_rc 
    FOR SELECT null 
     FROM dual; 
END; 

것,하지만이 투명 변화하지 않을 수 있습니다.

+0

이 복잡한 문제는 고맙지 만 절차를 호출하고 null 값 즉 EXEC lc_unbookTrade (p_exeid)를 반환 할 수 있기를 바랍니다. – user3706392

+1

@ user3706392 - 저스틴 (Justin 's)은 ​​절차에서 아무 것도 반환 할 수 없다고했습니다. SQL Server 프로 시저를 호출하는 데 현재 사용하고있는 코드를 질문에 추가하면 투명한 Oracle 버전이 있는지 여부를 나타냅니다. 그렇지 않으면 당신은 불가능한 것을 요구하고 있습니다. –

+0

절차는 위와 동일하지만 내가 원하는 것은 Execute lc_unbookTrade (exeid)를 실행할 때입니다. 결과는 빈 문자열 – user3706392

관련 문제