Question

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?

Was it helpful?

Solution

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;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top