Oracle을 처음 사용하고 다른 조건을 기반으로 다른 데이터를 선택하는 복잡한 저장 프로 시저를 작성합니다. 내가 저장 프로 시저를 실행 할 수없는 오전, 그것은 다음과 같은 오류를 제공합니다oracle 저장 프로 시저를 실행할 수 없습니다.
내 코드는 아래와 같습니다ORA-06550: line2, column 3:
PLS-00905: object SAURAV.LOG_DETAIL is invalid
ORA-06550: line 2, column 3:
PL/SQL: Statement Ignored
ORA-06512: at line 58
:
CREATE OR REPLACE
PROCEDURE LOG_DETAIL(
startIndex IN INT
,pageSize IN INT
,branchId IN varchar2
,customerId IN varchar2
,fromDate IN DATE
,toDate IN DATE
,withDate IN INT
,p_cursor OUT sys_refcursor
) AS
BEGIN
IF withDate = 1 then
IF branchId = NULL then
IF customerId = 'All' then
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
WHERE date_time BETWEEN fromDate || '%' AND toDate || '%'
) AS RowNumber FROM log_info,branch_info
WHERE date_time BETWEEN fromDate || '%' AND toDate || '%'
AND branch_info.branch_id = log_info.branch_id
)
WHERE MyRows BETWEEN startIndex AND startIndex + pageSize - 1;
ELSE
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
WHERE customer_id = customerId
AND date_time BETWEEN fromDate || '%'
AND toDate || '%'
) AS RowNumber
FROM log_info,branch_info
WHERE customer_id = customerId
AND date_time BETWEEN fromDate || '%'
AND toDate || '%'
AND log_info.branch_id = branch_info.branch_id
)
WHERE MyRows BETWEEN startIndex
AND startIndex + pageSize - 1;
END IF;
ELSE
IF customerId = 'All' then
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
WHERE branch_id = branchId
AND date_time BETWEEN fromDate || '%'
AND toDate || '%'
) AS RowNumber
FROM log_info
,branch_info
WHERE log_info.branch_id = branchId
AND date_time BETWEEN fromDate || '%'
AND toDate || '%'
AND branch_info.branch_id = log_info.branch_id
)
WHERE MyRows BETWEEN startIndex
AND startIndex + pageSize - 1;
ELSE
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
WHERE branch_id = branchId
AND customer_id = customerId
AND date_time BETWEEN fromDate || '%'
AND toDate || '%'
) AS RowNumber
FROM log_info
,branch_info
WHERE log_info.branch_id = branchId
AND customer_id = customerId
AND date_time BETWEEN fromDate || '%'
AND toDate || '%'
AND log_info.branch_id = branch_info.branch_id
)
WHERE MyRows BETWEEN startIndex
AND startIndex + pageSize - 1;
END IF ;
END IF ;
ELSE
IF customerId = 'All' then
IF branchId = NULL then
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
) AS RowNumber
FROM log_info
,branch_info
WHERE branch_ingo.branch_id = log_info.branch_id
)
WHERE MyRows BETWEEN startIndex
AND startIndex + pageSize - 1;
ELSE
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
WHERE branch_id = branchId
) AS RowNumber
FROM log_info
,branch_info
WHERE log_info.branch_id = branchId
AND log_info.branch_id = branch_info.branch_id
)
WHERE MyRows BETWEEN startIndex
AND startIndex + pageSize - 1;
END IF ;
ELSE
IF branchId = NULL then
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
WHERE customer_id = customerId
) AS RowNumber
FROM log_info
,branch_info
WHERE customer_id = customerId
AND branch_info.branch_id = log_info.branch_id
)
WHERE MyRows BETWEEN startIndex
AND startIndex + pageSize - 1;
ELSE
OPEN p_cursor
FOR SELECT * FROM (
SELECT ROW_NUMBER() OVER (
ORDER BY id
) AS MyRows
,log_info.branch_id
,branch_name
,customer_id
,in_time
,out_time
,date_time
,ip
,(
SELECT COUNT(id)
FROM log_info
WHERE customer_id = customerId
AND branch_id = branchId
) AS RowNumber
FROM log_info
,branch_info
WHERE customer_id = customerId
AND log_info.branch_id = branchId
AND log_info.branch_id = branch_info.branch_id
)
WHERE MyRows BETWEEN startIndex
AND startIndex || pageSize - 1;
END IF ;
END IF ;
END IF ;
END LOG_DETAIL;
내가 다음 명령을 사용하여 프로 시저를 실행하고 있습니다 :
variable z refcursor;
LOG_DETAIL(1,20,null,'All',null,null,0,z);
을 다음 쿼리 실행 후 :
select * from all_errors where name='LOG_DETAIL' order by sequence
나는 결과 다음있어
:
OWNER NAME TYPE SEQUENCE LINE POSITION TEXT ATTRIBUTE MESSAGE_NUMBER
SAURAV LOG_DETAIL PROCEDURE 1 30 49 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 2 30 57 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 3 30 29 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 4 30 39 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 5 32 47 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 6 32 55 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 7 32 27 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 8 32 37 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 9 54 11 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 10 54 19 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 11 53 28 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 12 53 38 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 13 59 9 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 14 59 17 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 15 58 26 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 16 58 36 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 17 84 10 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 18 84 18 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 19 83 27 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
SAURAV LOG_DETAIL PROCEDURE 20 83 37 PLW-07204: conversion away from column type may result in sub-optimal query plan WARNING 7204
이 문제를 해결 도와주세요.
편집 : 스택 추적이 추가되었습니다.
date_time BETWEEN fromDate || '%' AND toDate || '%'
왜 퍼센트 기호를 추가 :
SAURAV 사용자로 절차를 만들었습니까? 다음으로 확인하십시오 :'select object_name, owner from all_objects object_name = 'LOG_DETAIL''. 그렇다면 귀하의 실행 문을 – JWK
예 게시하고 오라클에 의해 제공되는 SQL 개발자를 통해 그것을 실행하려고합니다 동일한 연결 –
@ JWK 쿼리 froom 커맨드 라인을 실행할 때 다음 결과 : OBJECT_NAME OWNER - ----------------------------- --------------------- --------- LOG_DETAIL SAURAV –