请问用什么方法可以调用存储过程?

eris_chen 2002-08-22 05:31:24
本人现在客户机(winXP)上开发vb的应用程序,应用程序需调用在服务器端(aix)的存储过程, 数据库用的是ibmdb2,请高手指点。最好能写清楚语句格式。亟待
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
eris_chen 2002-08-23
  • 打赏
  • 举报
回复
我怎样将分数发给你们,并且将问题删掉。
附:问题还未解决,我会到shawls的网上去看看,多谢两位。
shawls 2002-08-22
  • 打赏
  • 举报
回复
[名称] 数据库编程中调用带参数存储过程的实现下

[语言种类] Visual Basic

[类别一] 数据库

[类别二] 空

[类别三] 空

[数据来源] 未知

[保存时间] 2002-01-17

[关键字一] 存储过程

[关键字二] 参数

[关键字三] 调用

[内容简介] 据库编程中调用带参数存储过程
类别与关键字:
数据库  SQL 
简介: A A
整理:WXJ_Lake

[源代码内容]

在按钮中的代码如下:
Dim i As integer
Dim j as integer
Set parm_jobid = New ADODB.Parameter
Set mycommand = New ADODB.Command
' parm_jobid.Name = "name1"
this line can be ommited
parm_jobid.Type = adInteger '参数类型
parm_jobid.Size = 3 '参数长度
parm_jobid.Direction = adParamInput
‘参数方向,输入或输出
parm_jobid.value = 100 '参数的值
mycommand.Parameters.Append
parm_jobid '加入参数


Set parm_joblvl = New ADODB.Parameter
'parm_joblvl.Name = "name2"
parm_joblvl.Type = adInteger
parm_joblvl.Size = 3
parm_joblvl.Direction = adParamInput
mycommand.value = 100
mycommand.Parameters.Append parm_joblvl


mycommand.ActiveConnection = cnn1
'指定该command 的当前活动连接
mycommand.CommandText = " myprocedure "
'myprocedure 是你要调用的存储过程名称
mycommand.CommandType = adCmdStoredProc
'表明command 为存储过程
Set rstByQuery = New ADODB.Recordset
Set rstByQuery = mycommand.Execute()
i = 0
Do While Not rstByQuery.EOF
 i = i + 1 ' i 中保存记录个数
 rstByQuery.MoveNext
Loop
MSFlexGrid1.Rows = i + 1
'动态设置MSFlexGrid的行和列
MSFlexGrid1.Cols = rstByQuery.Fields.Count + 1
MSFlexGrid1.Row = 0
For i = 0 To rstByQuery.Fields.Count - 1
 MSFlexGrid1.Col = i + 1
 MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name
Next '设置第一行的标题,用域名填充

i = 0
Set rstByQuery = mycommand.Execute()
Do While Not rstByQuery.EOF
 i = i + 1
 MSFlexGrid1.Row = i '确定行
 For j = 0 To rstByQuery.Fields.Count - 1
  MSFlexGrid1.Col = j + 1
  MSFlexGrid1.Text = rstByQuery (j)
  '添充所有的列
 Next
 rstByQuery.MoveNext
Loop '这个循环用来填充MSFlexGrid的内容



特殊说明
1. Set recordset = command.Execute( RecordsAffected, Parameters, Options ) command.Execute RecordsAffected, Parameters, Options
这是command的两种用法,一种有返回结果集,一种没有返回结果集。

RecordsAffected:是指用update、delete操作时所影响的结果,对select的查询,其值为-1;这和在Ms sql server 中的Query Analyzer中的不一样。Query Analyzer中,select、update、delete的结果显示的是实际查、改、删的记录数。

Options:指明command的类型,有adCmdText、adCmdTable、adCmdStoredProc等等,用户可见MSDN。

2.在参数的类型中,用户可以用varchar来代替integer,系统会帮你自动实施转化;

3.本例中仅为带输入参数的存储过程,如果要有输出参数,根据MSDN的材料,用ADO不行。你可以用RDO数据对象,MSDN中有一个例子,此处不做过多赘述;

4.可以不用ADO COMMAND对象,也可直接调用ADO CONNECTION的execute方法,结果很类似。


以上代码保存于: SourceCode Explorer(源代码数据库)
复制时间: 2002-08-22 17:57:02
软件版本: 1.0.730
软件作者: Shawls
个人主页: Http://Shawls.Yeah.Net
E-Mail: ShawFile@163.Net
QQ: 9181729
shawls 2002-08-22
  • 打赏
  • 举报
回复
[名称] 数据库编程中调用带参数存储过程的实现上

[语言种类] Visual Basic

[类别一] 数据库

[类别二] 空

[类别三] 空

[数据来源] 未知

[保存时间] 2002-01-17

[关键字一] 存储过程

[关键字二] 参数

[关键字三] 调用

[内容简介] 据库编程中调用带参数存储过程
类别与关键字:
数据库  SQL 
简介: A A
整理:WXJ_Lake

[源代码内容]

 下面,我们谈谈在VB中调用存储过程的实现方法及其注意事项。
  我们知道,VB的数据库编程有许多种方法,比如直接用ODBC API编程,这种方法灵活、高效,程序员可以实现对数据库复杂的控制;也可以用VB中的数据对象,如RDO(远程数据对象)、DAO(数据访问对象)、ADO(ActiveX 数据对象),这种方法实现起来方便、快捷,但灵活性较差一些。由于存储过程在实现数据封装、隐藏以及代码的预编译、减少网络负载、维护方便等优点,所以被许多RDBMS和编程工具做支持。VB中的各类数据对象也提供对存储过程的支持。

  我们以ADO为例来说明其实现的步骤:

1. 创建、调试存储过程。你可以在数据库中也可以在其他外挂程序的支持下进行存储过程的创建和调试工作。本例中的存储过程代码如下(使用PUBS的MS SQL中的例子库 ):

CREATE PROCEDURE myprocedure
@job_id smallint,
@job_lvl tinyint
AS
SELECT *
FROM employee
WHERE job_id < @job_id
AND job_lvl > @job_lvl

2. 在VB中生成一个新工程,窗体有一个COMMAND(NAME:COMMAND1)按钮,一个 MSFlexGrid(NAME:MSFlexGrid1)控件。
3. 创建连接ADO connection;
4. 创建命令ADO command;
5. 创建参数并设置各个参数的属性;
6. 执行ADO command;
7. 对数据进行处理;MSFlexGrid显示查询到的数据
8. 释放连接,退出程序。

其中代码如下:

在窗体中声明以下变量:
Dim cnn1 As ADODB.Connection '连接
Dim mycommand As ADODB.Command '命令
Dim parm_jobid As ADODB.Parameter '参数1
Dim parm_joblvl As ADODB.Parameter '参数2
Dim rstByQuery As ADODB.Recordset '结果集
Dim strCnn As String '连接字符串

在窗体的LOAD事件中加入如下代码:
Set cnn1 = New ADODB.Connection
'生成一个连接
strCnn = "DSN=MYDSN;uid=sa;pwd="
'创建的系统数据源MYDSN指向PUBS数据库
cnn1.Open strCnn '打开连接

在窗体的UNLOAD中的加入代码如下:
cnn1.Close '关闭连接
Set cnn1 = Nothing '释放连接



以上代码保存于: SourceCode Explorer(源代码数据库)
复制时间: 2002-08-22 17:56:47
软件版本: 1.0.730
软件作者: Shawls
个人主页: Http://Shawls.Yeah.Net
E-Mail: ShawFile@163.Net
QQ: 9181729
pupufang 2002-08-22
  • 打赏
  • 举报
回复
我想你应该是通过CA建数据源连接,再用command对象执行存储过程
dim cn as new adodb.recordset
dim cm as New ADODB.Command
cn.connectstring="你的连接串"
cn.open
With cm
.CommandText = "存储过程名"
.CommandType = adCmdStoredProc
.ActiveConnection = cn
End With
不知道你调的存储过程是否带参数,如果不带的话直接
cm.Execute
如有参数的话:
cm.Parameters.Append cm.CreateParameter("存储过程的参数名1", 参数类型, adParamInput(输入), 参数大小, 参数值) '这是建立输入参数

cm.Parameters.Append cm.CreateParameter("存储过程的参数名2", 参数类型, adParamOutput(输出), 参数大小) '这是建立输出参数
然后再 cm.Execute
取输出参数的值:
变量= cm.Parameters("参数名2")
具体看看msdn就知道了,祝你成功

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧