类型:音频处理大小:1M语言:中文 评分:5.1
标签:
立即下载
我的hibernate.cfg.xml
代码hibernate.cfg.xml
1 <?xml version="1.0" encoding="utf-8"?>
2
3
4 NHibernate.Connection.DriverConnectionProvider
5 NHibernate.Driver.OracleDataClientDriver
6
7 data source=GXLX193;user id=lxmis;password=lxmis
8
9 10
10 auto
11 true
12 true
13 NHibernate.Dialect.Oracle10gDialect
14 10
15 true 1, false 0, yes 'Y', no 'N'
16 NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle
17 none
18
19
20
我的hbm.xml
.hbm.xml代码
1<?xml version="1.0" encoding="utf-8"?>
2
3
4 {Call pro_GetAllA(:k)}
5
6
7 select a.FID as id,
8 a.PARAM_VALUE as va
9 from T_PARAMS a
10
11
12
我的错误代码
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 ISession _ISeesion = new SessionManager().GetSession();
6 IQuery q = _ISeesion.GetNamedQuery("Dualsa");
7 IList list = q.SetInt32("k", 0).List();
8 }
9 }
错误信息是:Message="could not execute query\r\n[ {call up_test (:p0,:p1) } ]\r\n Name:pInt - Value:100 Name:pString - Value:hello\r\n[SQL: {call up_test (:p0,:p1) }]"
ORA-00911: invalid character
为了说明我能执行其他的,我试了调用aaa是正常的,可以执行有结果
我的正确代码
class Program
{
static void Main(string[] args)
{
ISession _ISeesion = new SessionManager().GetSession();
IQuery q = _ISeesion.GetNamedQuery("aaa");
IList list = q.List();//正确有结果的
}
}
我的储存过程
1 create or replace procedure pro_GetAllA( my_cursor out sys_refcursor,k int ) as
2 begin
3 open my_cursor for select a.FID as id,
4 a.PARAM_VALUE as va
5 from T_PARAMS a;
6 end pro_GetAllA;
我改用另一种方法了,
NHibernate.Driver.OracleDataClientDriver
改回原来的OracleClientDriver
去掉Oracle.DataAccess.dll的引用
直接使用
ISession _ISeesion = new SessionManager().GetSession();
IDbCommand _cmd = _ISeesion.Connection.CreateCommand();
_cmd.CommandText = "pro_GetAllA";
_cmd.CommandType = CommandType.StoredProcedure;
System.Data.OracleClient.OracleCommandBuilder.DeriveParameters((System.Data.OracleClient.OracleCommand)_cmd);
IDataReader _IDReader = _cmd.ExecuteReader();
object[] _o = new object[_IDReader.FieldCount];
while (_IDReader.Read())
{
for (int i = 0; i < _IDReader.FieldCount; i++)
_o[i] = _IDReader[i];
}