当前位置: 技术问答>java相关
关于存储过程输入参数的一个问题
来源: 互联网 发布时间:2015-09-05
本文导语: 我的数据库中有个Content字段是text类型,我创建了一个存储过程添加记录 CREATE PROCEDURE addException @userID varchar(12),@fileName varchar(30),@style varchar(30),@content varchar(1000) AS Insert into dbo.Exception (UserID,FileName,Style,Content) Val...
我的数据库中有个Content字段是text类型,我创建了一个存储过程添加记录
CREATE PROCEDURE addException
@userID varchar(12),@fileName varchar(30),@style varchar(30),@content varchar(1000)
AS
Insert into dbo.Exception (UserID,FileName,Style,Content) Values (@userID,@fileName,@style,@content)
GO
问题是@content varchar(1000)对吗?text类型应如何写?
在调用的时候是
cstmt = con.prepareCall("{call addException(?,?,?,?)}");
cstmt.setBytes(1,userID.getBytes());
cstmt.setBytes(2,fileName.getBytes());
cstmt.setBytes(3,style.getBytes());
cstmt.setBytes(4,content.getBytes());
cstmt.executeUpdate();
第四个参数是这样设置吗?
当然这样是可以实现添加功能,但是总觉的@content varchar(1000)有点不妥
CREATE PROCEDURE addException
@userID varchar(12),@fileName varchar(30),@style varchar(30),@content varchar(1000)
AS
Insert into dbo.Exception (UserID,FileName,Style,Content) Values (@userID,@fileName,@style,@content)
GO
问题是@content varchar(1000)对吗?text类型应如何写?
在调用的时候是
cstmt = con.prepareCall("{call addException(?,?,?,?)}");
cstmt.setBytes(1,userID.getBytes());
cstmt.setBytes(2,fileName.getBytes());
cstmt.setBytes(3,style.getBytes());
cstmt.setBytes(4,content.getBytes());
cstmt.executeUpdate();
第四个参数是这样设置吗?
当然这样是可以实现添加功能,但是总觉的@content varchar(1000)有点不妥
|
既然是varchar类型,何必那么麻烦。
cstmt.setString(1,userID);不就得了。
Oracle的大文本字段是clob.
而informix就是text.所以不同的数据库你就去查查相应数据库的资料嘛!
cstmt.setString(1,userID);不就得了。
Oracle的大文本字段是clob.
而informix就是text.所以不同的数据库你就去查查相应数据库的资料嘛!
|
你用的数据库是sysbase or sql server?
不过两者都差不多,如果你要插入的数据不超过1000的话可以用,是不是text记不清了,还是查查资料吧。
不过两者都差不多,如果你要插入的数据不超过1000的话可以用,是不是text记不清了,还是查查资料吧。
|
没有问题啊,varchar一般的数据库都支持2k。