2017-03-25 1 views
-1

제 3 자보고 도구에서 호출 한 oracle 저장 프로 시저가 있습니다. 저장 프로 시저가 실행될 때 행을 반환하지 않습니다.Oracle 저장 프로 시저보기 sys_refcursor

사실 나는 웹 사이트에서 전달되는 매개 변수가있는 where 절에서 쿼리 결과가 잘못되었다는 것을 알고 있습니다.

실행중인 쿼리를 보려고하는데 로그에서 저장 프로 시저를 호출하는 쿼리 만 표시하지 않습니다. 웹 사이트 코드에 액세스 할 수 없어 응답을 작성하고 저장 프로 시저 또는 매개 변수를 표시합니다. 아래의 저장 프로 시저에서 sys_refcursor를 볼 수있는 방법에 대한 지침을 제공해 주시겠습니까? 난 두꺼비를 사용하고 있는데 나는 두꺼비 스크립트 러너를 사용할 때 어떤 결과

코드

create or replace procedure dolphin.report_four 
    (p_1 char, 
    P_2 date, 
    p_recordset out sys_refcursor) 
    AS 
    Begin 
    Select 
    column_1, 
    column_2, 
    column_3 

    from dolphin.tank 
    where 
    column_1 = 'BAIT' and 
    column_2 = 'p_2' 

    end report_four; 
+0

이 절차를 수행 할 수 없습니다. 아마 여기 출판을 위해 편집 한 것 같습니다. 공정하다. 그러나 편집 한 코드 **가 현재 가지고있는 문제를 증명하는지 확인해야합니다 **. 런타임 예외를 발생시키는 코드는이를 자르지 않습니다. – APC

답변

0

이 프로 시저 호출을 로깅을위한 테이블 만들기를 참조하고 추가하는 절차 내에서 INSERT 문을 추가하지 마십시오 매개 변수가 전달 된 행 그 후에 COMMIT;을 기억하십시오.

설정하는 절차 쿼리 :

select /*+ monitor MY_KEY_765746573*/ 
f1, f2, ... 
from ... 

는 프로 시저를 호출하는 응용 프로그램을 확인합니다.

그런 다음

select sql_id, sql_fulltext from v$sql where sql_fulltext like '%MY_KEY_'||'765746573%'; 

그런 다음 SQL_ID 통화로 발견 배치 실행

select dbms_sqltune.report_sql_monitor('YOUR SQL_ID HERE') from dual; 

내가 SQL 모니터 보고서와 함께 테이블 레코드를 기록 희망이 당신에게 단서를 제공합니다.

0

"저장 프로 시저가 실행 중일 때 행을 반환하지 않습니다."

게시 된 코드는 SELECT 문을 실행하지만 REF CURSOR에 아무 것도 전달하지 않습니다. 이것이 실제 절차라면 실행하려고 시도했을 때 오류가 발생합니다.

create or replace procedure dolphin.report_four 
    (p_1 char, 
    P_2 date, 
    p_recordset out sys_refcursor) 
    AS 
Begin 
    open p_recordset for 
     Select 
      column_1, 
      column_2, 
      column_3 
     from dolphin.tank 
     where 
     column_1 = 'BAIT' and 
     column_2 = 'p_2'; 
end report_four; 

심판 열기 : 아마도 당신이이 상황은 실제 코드의 반영 여부를 알 어렵다, 그래서에 StackOverflow에 게시의 소스를 편집의 bish을 만들었지 만 한 것이이 같은 일을한다고 CURSOR는 매개 변수를 조회 결과 세트와 연관시킵니다.

+0

답장을 보내 주셔서 감사합니다. 당신이 옳다면 코드를 편집하여 코드를 더 간단하게 만들었습니다. 부정적인 영향을 미쳤을 것입니다. 문제는 column_2 = 'p_2'인 where 절에 있습니다. 나는 Where 절이 문제를 확인하는 방법을 찾는 방법을 찾으려고했다. p_2로 insert 문을 수행했는데 매개 변수 값이 정상입니다. REF CURSOR를 제공해 주셔서 감사합니다. 쿼리 결과 집합입니다. 쿼리 자체라고 생각했습니다. – bosco0102

관련 문제