在Oracle程序包中创建过程时忽略SQL语句

时间:2014-05-15 06:40:55

标签: oracle plsql syntax-error

我正在使用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帮助。我不知道我哪里出错了?

1 个答案:

答案 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;