나는 현재 유창함 NHibernate에 ORM을 사용하여 오라클 기능 fu_GetUserGrant
를 호출하는 것을 시도하고있다. 나는 코드 아래 시도 : -유창함 NHibernate에 오라클 기능
var dbCommand = session.Connection.CreateCommand();
dbCommand.CommandText = "select fu_GetUserGrant(@grantId) from dual;";
dbCommand.CommandType = CommandType.Text;
var param = dbCommand.CreateParameter();
{
param.Value = grantId;
param.DbType = DbType.StringFixedLength;
param.Size = 200;
param.ParameterName = "@grantId";
}
dbCommand.Parameters.Add(param);
var result = dbCommand.ExecuteNonQuery();
return long.Parse(result.ToString());
그리고 점점 예외 실패의 몇 시간 후 Oracle.ManagedDataAccess.Client.OracleException : ORA-00936: missing expression
내가 다른 접근 방식을 시도 :
var c = session.
CreateQuery("select fu_GetUserGrant(:grantId) from dual;")
.SetParameter("grantId", grantId).UniqueResult<int>();
과 점점 예외 - NHibernate.Hql.Ast.ANTLR.QuerySyntaxException : dual is not mapped [select fu_GetUserGrant(:grantId) from dual;]
어떤 아이디어 얘들 아? 내가 MSSQL에서 동일한 기능을 검색 할 때 그것은 (물론 나는 때문에 MSSQL의 다른 SQL 쿼리를 사용합니다.)
전나무, 도와 주셔서 감사합니다. 나는 '@'를 ':'로 바꾸고 'Oracle.ManagedDataAccess.Client.OracleException : ORA-00936 : missing expression' 같은 예외를 받았다. 그러나 '같은 예외가 등장 "이중에서 fu_GetUserGrant ('* ')를 선택"은 dbCommand.CommandText ='- 그때는 CommandText에 가치를 하드 시도. – Tadziokaz
죄송합니다 내가 직접 오라클의 사용을 피하기 위해 대신 내가'RegisterFunction'를 통해 Dialect''정의에 내 기능을 등록하고, 내 NHibernate에 매핑 이러한 호출을 사용하여 추상적 SQL 함수 호출에 있지 않다, 단지 첫 번째 촬영했다. – tykovec