继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

初折腾Oracle问题小记二

Qyou
关注TA
已关注
手记 255
粉丝 52
获赞 361

说明:

为了CYQ.Data 框架 CYQ.Data 轻量数据层之路 框架开源系列 索引 引入支持Oralce,继续努力着。
今天花了半天,总算完成了添加/更新/删除操作。

 

 

 

继续记录今天折腾Oralce遇到的问题:

 

1:参数化传参,默认加了个返回值ReturnValue参数,引发异常--参数个数配对问题。

 

2:参数的数据类型设置大小设置不能为-1,不然会引发值太大,无法绑定的引异常--参数大小需要指定。

 

3:参数化语句如:Insert Users(ID,UserName) values(AutoID.nextval,:UserName)--参数用":"

 

4:参数添加可以加前缀或不加前缀如:

com.Parameters.Add(":UserName",objValue)

com.Parameters.Add("UserName",objValue);

 

5:多语句执行,语法如下:begin 语句1;语句2;end;

示例:

复制代码

begin

Insert Users(id,username,url) values(1,'路过秋天','http://cyq1162.cnblogs.com');

update ......;

end;
复制代码

说明:

只能批量执行insert/update/delete/select ..into等不返回结果的语句。

 

继续补充

6:写了一个测试的存储过程如下:

复制代码

create or replace package MyPackage as 
type cursorResult is ref cursor;
procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,myResult out cursorResult);
end MyPackage;


procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,myResult out cursorResult)
  is
  mySql varchar2(2000);
  begin
    mySql='select * from '||tableName;
    open myResult for mySql;
    end SelectBase;
  
  
  end MyPackage;复制代码

 

在PL/SQL下Test执行,发现int都显示成Float型了。

 

直接界面调用报以下错误:

ORA-04063: package body "SA.MYPACKAGE" has errors
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 1

 

问题已解决:

这种错误都是语法错误,把上面的mySql='select...'改成mySql:=‘select...’即可。

 

 

 

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP