Domanda

I am using oracle 10g.

While Creating Package in oracle. I am getting this error SQL Statement Ignored.

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;

and package body is:

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 help. I don't know where am I going wrong?

È stato utile?

Soluzione

The reason is that you are using returning clause with SELECT, however it can be used only with DELETE, EXECUTE IMMEDIATE, INSERT, and UPDATE statements, see docs.oracle.com/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm

Try this:

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top