直接上代码吧Option ExplicitPrivate Sub Command1_Click()
Dim MyComm As New ADODB.Command
Dim Rs_GetList As New ADODB.Recordset
With MyComm
.ActiveConnection = Cn 'MarketConn是数据库连接字串
.CommandText = "pp(3)" '" 'SP_Ping_Dialtest" '指定存储过程名
.CommandType = adCmdStoredProc '表明这是一个存储过程
.Prepared = True '要求将SQL命令先行编译
' .Parameters(1) = "1"
Set Rs_GetList = .Execute End With
'Set Rs_GetList = Cn.Execute("call pp()")
While Not Rs_GetList.EOF
Debug.Print Rs_GetList.Fields(0).Value
Rs_GetList.MoveNext
Wend
End Sub上面是VB的代码。CN通过数据源和MYSQL联系起来下面是存储过程的代码
[code=SQL]
create procedure PP(a int)
begin
select * from t where s1>a;
end
[/code]t表的记录(1,2,3,4)======================================================
问题:
调用方法1:CommandText = "pp(3)" 参数带到这里,既然这样,那和STRSQL直接传SQL命令进去有什么不同
调用方法2:' .Parameters(1) = 1 参数传递进去后,在最后 Set Rs_GetList = .Execute的时候就报错了。对于VB调用MYSQL的存储过程,是不是只能用命令,把参数全部写到命令字符串里面??
Dim MyComm As New ADODB.Command
Dim Rs_GetList As New ADODB.Recordset
With MyComm
.ActiveConnection = Cn 'MarketConn是数据库连接字串
.CommandText = "pp(3)" '" 'SP_Ping_Dialtest" '指定存储过程名
.CommandType = adCmdStoredProc '表明这是一个存储过程
.Prepared = True '要求将SQL命令先行编译
' .Parameters(1) = "1"
Set Rs_GetList = .Execute End With
'Set Rs_GetList = Cn.Execute("call pp()")
While Not Rs_GetList.EOF
Debug.Print Rs_GetList.Fields(0).Value
Rs_GetList.MoveNext
Wend
End Sub上面是VB的代码。CN通过数据源和MYSQL联系起来下面是存储过程的代码
[code=SQL]
create procedure PP(a int)
begin
select * from t where s1>a;
end
[/code]t表的记录(1,2,3,4)======================================================
问题:
调用方法1:CommandText = "pp(3)" 参数带到这里,既然这样,那和STRSQL直接传SQL命令进去有什么不同
调用方法2:' .Parameters(1) = 1 参数传递进去后,在最后 Set Rs_GetList = .Execute的时候就报错了。对于VB调用MYSQL的存储过程,是不是只能用命令,把参数全部写到命令字符串里面??
解决方案 »
- vb6.0 和 SQL 条件查询问题 拜托大家帮我看看哈
- 一个时间是2008-12-15 06:20,另一个时间是2008-12-14 23:50,2个时间怎么相减,得到6小时30分这样的结果?
- 怎样得到当前系统中FoxPro软件的安装路径
- 加载第三方控件出错
- 怎样激活一个窗体并显示?
- 请教!200分奉送!
- winsock发送Unicode问题,急,在线等
- vb捕获摄像头视频时无法生成avi文件
- adodc控件与数据库的动态联接问题??
- VB6如何用sql语句将一个Foxpro的dbf数据库作为一个表导入VB自带的mdb数据库中!
- 急!小问题,VB读字符串进行数值转换问题,请帮忙
- 如何刷新数据库?
不是,调用的是一个可带参数的子程序,也可不带,子程序在服务器里,只是让它执行起来
Set param = cmd.CreateParameter("@a", adInteger, adParamInput, 4, 1)
cmd.Parameters.Append param
感谢VBMAN2003,搞定了。。我整理下,做一个通用的模板出来。。
Dim MyComm As New ADODB.Command '定义一个命令对象
Dim Rs_GetList As New ADODB.Recordset '定义一个记录集对象
Dim param As ADODB.Parameter '定义一个参数对象
With MyComm
.ActiveConnection = Cn '数据连接
.CommandText = "pp" '存储过程名称
.CommandType = adCmdStoredProc '表明这是一个存储过程
.Prepared = True '要求将SQL命令先行编译
Set param = .CreateParameter("@a", adInteger, adParamInput, 4, 3) '申明一个参数
.Parameters.Append param '把参数添加到参数列表里
Set Rs_GetList = .Execute '执行此存储过程,返回记录集
End With
While Not Rs_GetList.EOF '循环打印记录集的字段
Debug.Print Rs_GetList.Fields(0).Value
Rs_GetList.MoveNext
WendEnd Sub
抛砖引玉。
直接贴代码;drop procedure IF EXISTS `pp`; create procedure PP(a int)
begin
DECLARE v int;
set v=(select SUM(case when s1 >2 then 1 else 0 end )from t);
select * from t where s1>v;
end我想做一个SQL文件,导入后,直接执行,就创建一个存储过程,这个里面需要判断是否已经存在此过程现在的问题是。第一行的判断语句和下面的,不能一次执行。贴出来的代码就是我这个SQL文件的全部,执行错误,单独执行,先执行检查重复的,再执行创建代码,可以执行。。怎么样做到一起呀??
CREATE TABLE `sys_dictionary` (
`SYS_DICTIONARY_ID` int(8) NOT NULL,
`NAME` varchar(50) default NULL,
`REMARKS` varchar(1000) default NULL,
`PARENT_ID` int(8) default NULL,
`SORT` int(8) default NULL,
`ISFLAG` char(1) default NULL,
`SIGN` varchar(50) default NULL,
`SYS_VALUE` varchar(50) default '',
PRIMARY KEY (`SYS_DICTIONARY_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
这里咋可以啊。VBMAN,帮忙看下。。
MYSQL的存储过程,可以进行加密发布吗?
因为PHP+mysql是比较完美的