我正在使用oracle 10g。
在oracle中创建包时。我收到此错误SQL语句被忽略。
My Package Specification is :
create or replace PACKAGE PACKAGE_CHECK AS
PROCEDURE USP_PASS_EXPIRE(SP_DAYS_COUNT OUT NUMBER, SP_LOGIN_NAME IN VARCHAR2);
END PACKAGE_CHECK;
和包体是:
create or replace PACKAGE BODY PACKAGE_CHECK AS
PROCEDURE USP_PASS_EXPIRE(SP_DAYS_COUNT OUT NUMBER, SP_LOGIN_NAME IN VARCHAR2) IS
BEGIN
SELECT (SYSDATE-"LastLogin")
FROM "ApplicationUser"
WHERE "LoginName"=SP_LOGIN_NAME
AND "IsActive"='Y'
AND "IsDeleted"='N' returning (SYSDATE-"LastLogin")
into SP_DAYS_COUNT;
END USP_PASS_EXPIRE;
END PACKAGE_CHECK;
Plaese帮助。我不知道我哪里出错了?
答案 0 :(得分:2)
原因是你在SELECT中使用了return子句,但它只能用于DELETE,EXECUTE IMMEDIATE,INSERT和UPDATE语句,参见 docs.oracle.com/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm
试试这个:
CREATE OR REPLACE PACKAGE PACKAGE_CHECK
AS
PROCEDURE USP_PASS_EXPIRE(
SP_DAYS_COUNT OUT NUMBER,
SP_LOGIN_NAME IN VARCHAR2);
END PACKAGE_CHECK;
/
CREATE OR REPLACE PACKAGE BODY PACKAGE_CHECK
AS
PROCEDURE USP_PASS_EXPIRE(
SP_DAYS_COUNT OUT NUMBER,
SP_LOGIN_NAME IN VARCHAR2)
BEGIN
SELECT (SYSDATE-"LastLogin")
INTO SP_DAYS_COUNT
FROM "ApplicationUser"
WHERE "LoginName"=SP_LOGIN_NAME
AND "IsActive" ='Y'
AND "IsDeleted" ='N';
END USP_PASS_EXPIRE;
END PACKAGE_CHECK;