行错误:PL / SQL:SQL语句忽略。在创建/更换包体 [英] ERROR at line : PL/SQL: SQL Statement ignored. while creating/replacing package body

查看:243
本文介绍了行错误:PL / SQL:SQL语句忽略。在创建/更换包体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Visual Studio 2010 asp.net 4.5的Oracle 10.2.0.1。

这是我的仓库code检查用户凭据:

 使用(为OracleConnection的OracleConnection =新BaseRepository()连接)
                {
                    oracleConnection.Open();
                    的OracleCommand命令=新的OracleCommand(PACKAGE_ACCOUNT.USP_GET_USER_BY_CREDENTIALS,为OracleConnection);
                    command.CommandType = System.Data.CommandType.StoredProcedure;                    command.Parameters.Add(SP_CURSOR,OracleDbType.RefCursor,System.Data.ParameterDirection.Output);
                    command.Parameters.Add(SP_LOGIN_NAME,OracleDbType.Varchar2,50,登录名,System.Data.ParameterDirection.Input);
                    command.Parameters.Add(SP_LOGIN_PASSWORD,OracleDbType.Varchar2,50,Security.EncryptText(loginPassword),System.Data.ParameterDirection.Input);                    Mapper.CreateMap<的IDataReader,ApplicationUser>();
                    DataReader的= Command.ExecuteReader却(); //这里的例外出现。                    清单< ApplicationUser> lstUsers = Mapper.Map<名单,LT; ApplicationUser>>(DataReader的);
                    返回lstUsers.FirstOrDefault();
                }

这是包装规格:

  CREATE OR REPLACE PACKAGE PACKAGE_ACCOUNT

TYPE T_CURSOR IS REF CURSOR;
程序USP_GET_USER_BY_CREDENTIALS(SP_CURSOR OUT T_CURSOR,SP_LOGIN_NAME IN VARCHAR2,SP_LOGIN_PASSWORD IN VARCHAR2);
END PACKAGE_ACCOUNT;
/

这是我的包体:

  CREATE OR REPLACE PACKAGE BODY PACKAGE_ACCOUNT

程序USP_GET_USER_BY_CREDENTIALS(SP_CURSOR OUT T_CURSOR,SP_LOGIN_NAME IN VARCHAR2,SP_LOGIN_PASSWORD IN VARCHAR2)
IS
开始
OPEN FOR SP_CURSOR
选择ApplicationUser。*,ORA_ROWSCN作为时间戳
从ApplicationUser
WHERELoginName将= SP_LOGIN_NAME
和LoginPassword= SP_LOGIN_PASSWORD
和请将isDeleted='N';
END USP_GET_USER_BY_CREDENTIALS;
END PACKAGE_ACCOUNT;
/

例外是:

  ORA-04063:包体OPTIMUS_USER.PACKAGE_ACCOUNT有错误
ORA-06508:PL / SQL:无法找到程序单元被称为:OPTIMUS_USER.PACKAGE_ACCOUNT
ORA-06512:在1号线

我不知道问题出在哪里。

在运行在Oracle主页的包体脚本。它给出了错误:


  

错误在第5行:PL / SQL:SQL语句忽略



解决方案

请检查OPTIMUS_USER架构所做的架构包含包PACKAGE_ACCOUNT或PACKAGE_ACCOUNT帐户模式属于任何其他模式。

I am using Visual Studio 2010 asp.net 4.5 Oracle 10.2.0.1.

This is my repository code for checking user credentials:

 using (OracleConnection oracleConnection = new BaseRepository().Connection)
                {
                    oracleConnection.Open();
                    OracleCommand command = new OracleCommand("PACKAGE_ACCOUNT.USP_GET_USER_BY_CREDENTIALS", oracleConnection);
                    command.CommandType = System.Data.CommandType.StoredProcedure;

                    command.Parameters.Add("SP_CURSOR", OracleDbType.RefCursor, System.Data.ParameterDirection.Output);
                    command.Parameters.Add("SP_LOGIN_NAME", OracleDbType.Varchar2, 50, loginName, System.Data.ParameterDirection.Input);
                    command.Parameters.Add("SP_LOGIN_PASSWORD", OracleDbType.Varchar2, 50, Security.EncryptText(loginPassword), System.Data.ParameterDirection.Input);

                    Mapper.CreateMap<IDataReader, ApplicationUser>();
                    dataReader = command.ExecuteReader(); // exception arises here.

                    List<ApplicationUser> lstUsers = Mapper.Map<List<ApplicationUser>>(dataReader);
                    return lstUsers.FirstOrDefault();
                }

this is package specification:

CREATE OR REPLACE PACKAGE PACKAGE_ACCOUNT
AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE USP_GET_USER_BY_CREDENTIALS(SP_CURSOR OUT T_CURSOR, SP_LOGIN_NAME IN VARCHAR2, SP_LOGIN_PASSWORD IN VARCHAR2);
END PACKAGE_ACCOUNT;
/

this is my package body:

CREATE OR REPLACE PACKAGE BODY PACKAGE_ACCOUNT
AS 
PROCEDURE USP_GET_USER_BY_CREDENTIALS(SP_CURSOR OUT T_CURSOR, SP_LOGIN_NAME IN VARCHAR2, SP_LOGIN_PASSWORD IN VARCHAR2)
IS 
BEGIN 
OPEN SP_CURSOR FOR 
SELECT "ApplicationUser".*, ora_rowscn as TimeStamp 
FROM "ApplicationUser" 
WHERE "LoginName" = SP_LOGIN_NAME
AND "LoginPassword" = SP_LOGIN_PASSWORD
AND "IsDeleted" = 'N'; 
END USP_GET_USER_BY_CREDENTIALS; 
END PACKAGE_ACCOUNT;
/

Exception is :

 ORA-04063: package body "OPTIMUS_USER.PACKAGE_ACCOUNT" has errors
ORA-06508: PL/SQL: could not find program unit being called: "OPTIMUS_USER.PACKAGE_ACCOUNT"
ORA-06512: at line 1

I have no idea where the problem is.

While running the package body script in oracle home page. It gives error:

ERROR at line 5: PL/SQL: SQL Statement ignored.

解决方案

Please check OPTIMUS_USER schema does the schema contains the package PACKAGE_ACCOUNT or the PACKAGE_ACCOUNT account schema belongs to any other schema.

这篇关于行错误:PL / SQL:SQL语句忽略。在创建/更换包体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆