行错误:PL / SQL:忽略SQL语句。同时创建/更换包体。 Oracle.DataAccess.Client.OracleException

时间:2014-04-14 07:38:37

标签: asp.net oracle

正如我之前提出的问题here,包装中的另一个程序正在发生同样的事情。

我的存储库代码:

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();
                }

我的包装规格:

CREATE OR REPLACE PACKAGE PACKAGE_ACCOUNT
AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE USP_GET_APP_FUNC_BY_ROLE_ID(SP_ROLE_ID IN INT, SP_CURSOR OUT T_CURSOR);
END PACKAGE_ACCOUNT;
/

我的包裹身体:

CREATE OR REPLACE PACKAGE BODY PACKAGE_ACCOUNT
AS 

PROCEDURE USP_GET_APP_FUNC_BY_ROLE_ID(SP_ROLE_ID IN INT, SP_CURSOR OUT T_CURSOR)
IS
BEGIN
  OPEN SP_CURSOR FOR
select "ApplicationFunction".* from "RoleAccess"
Inner Join "ApplicationFunction" 
on "RoleAccess"."fkApplicationFunctionId" = "ApplicationFunction"."pkApplicationFunctionId"
Where "RoleAccess"."fkApplicationRoleId" = SP_ROLE_ID;
END USP_GET_APP_FUNC_BY_ROLE_ID;


END PACKAGE_ACCOUNT;
/

这次出现相同的错误(选择“ApplicationFunction”。*)。 请帮助。

1 个答案:

答案 0 :(得分:1)

CREATE OR REPLACE PACKAGE PACKAGE_ACCOUNT
AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE USP_GET_APP_FUNC_BY_ROLE_ID(SP_ROLE_ID IN NUMBER(10,0), SP_CURSOR OUT T_CURSOR);
END PACKAGE_ACCOUNT;

ORACLE中没有INT将其更改为NUMBER(10,0)希望这可以解决您的问题。