oracle ora_p0,NHibernate储存过程ORACLE时提示"ORA-00911: invalid character"

2e47253c552e6b2c9351fb7b7bd61565.png

类型:音频处理大小: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];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值