正如我之前提出的问题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”。*)。 请帮助。
答案 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)
希望这可以解决您的问题。