大侠,救命!!调用存储过程

hhbll_2001 2001-11-28 11:27:28
存储过程中定义了一个Smalldatetime的参数,在VB中调用此存储过程,怎样设置
该参数的属性。盼各位帮忙
...全文
895 21 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
chickenzzz 2001-12-02
  • 打赏
  • 举报
回复
Dim Conn as ADODB.Connection
............
.........
theSQL="Exec Storeprocedure '" & smalldatetime & "'"
Set Rs=Conn.Execute(theSQL)

生成SQL语句比较好吧,方便用SQL Server Query Analyzer调试,我一直都是这样做的:)
塑料勺 2001-12-01
  • 打赏
  • 举报
回复
找书
kxcc_sx 2001-11-29
  • 打赏
  • 举报
回复
呵呵 好啊,又多了一个朋友!希望多多交流!互相长进!QQ:30092225
hhbll_2001 2001-11-29
  • 打赏
  • 举报
回复
kxcc_sx(开心虫虫)
十分感谢!!! 这个问题困了我两天了,听了你的介绍,我终于明白了,十分感谢!
能否告诉我你的QQ,方便小弟碰到问题再找你解决。小弟的QQ是:55202734。
kxcc_sx 2001-11-29
  • 打赏
  • 举报
回复
hhbll_2001
呵呵,既然是添加和更新记录,你的/*入库时间*/workdate获得是输入还是从系统获得,若使用系统获得,
就不会出问题,若是进行录入的话,肯定要进行日期时间转换的,否则类型不一样,当然会出错,现在的
错误很明显是传递的参数的类型不对导致实时错误:
‘-2147217887(80040e21)’
[mircrosoft][odbc sql server driver]没有执行可选特性
假如你是字符串的话“2001-11-27 00:00:00”可以将它转换一下成smalltime的类型就可以了,所以不必
强调vb中它的类型,
smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime。
SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。
第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。
日期范围从1900 年 1 月 1 日到 2079 年 6 月 6 日,精确到分钟。
如果你觉得麻烦的话,我这里有一个办法,那就是将workdate的类型该成长整形来记录日期
如果精度要求不高,直接使用8位数字来表示日期,例如:2001-01-01可表示为20010101
如果需要精确到时间 23:15:11则231511,你可以设两个字段,workdate 和worktime
也可以采用14位数字表示日期时间,这样不会出错,而且日期的加减都比较方便!
我这里有几个我写的函数你可以看看:具体在你的邮件里!
yuminggang 2001-11-28
  • 打赏
  • 举报
回复
用ADO执行存储过程可以直接带参数。
hhbll_2001 2001-11-28
  • 打赏
  • 举报
回复
帮忙啊!!!
hhbll_2001 2001-11-28
  • 打赏
  • 举报
回复
请各位帮帮忙啊!!!!
csdncb 2001-11-28
  • 打赏
  • 举报
回复
'''定义不需要传入参数,只有一个传出参数的过程
Public Function Execute_PLSQL_NoInput(ByVal strProName As String) As Boolean
On Error GoTo ErrHandle:
Dim strErr As String
If strProName = "" Then
Exit Function
End If
With CObj
.ActiveConnection = Con
.CommandType = adCmdStoredProc
.CommandText = strProName ' "stock_package.update_check_input"
End With

With CObj.Parameters
'.Append CObj.CreateParameter("p1", adVariant, adParamInput, 12)
.Append CObj.CreateParameter("p2", adChar, adParamOutput, 12)
End With
'CObj.Parameters(0) = strKey

Set Recrs = CObj.Execute()
strErr = UCase(Trim(CObj.Parameters.Item("p2")))

'CObj.Parameters.Delete (1)
CObj.Parameters.Delete (0)

If strErr = "OK" Then
Execute_PLSQL_NoInput = True
Else
Execute_PLSQL_NoInput = False
End If

Exit Function
ErrHandle:
Execute_PLSQL_NoInput = False
End Function


上面是一具调用oracle存储过程的方法。
hhbll_2001 2001-11-28
  • 打赏
  • 举报
回复
小弟我这个问题还没解决,还请各位继续帮忙!
hhbll_2001 2001-11-28
  • 打赏
  • 举报
回复
存储过程里的参数类型为Smalldatetime,VB中我把参数的Type设为Addate,Addbdate都不行
急死我了
kxcc_sx 2001-11-28
  • 打赏
  • 举报
回复
有问题直接email:gaojun512@sina.com
kxcc_sx 2001-11-28
  • 打赏
  • 举报
回复
呵呵!
我觉得你应该验证以下你的sql语句,其他应该不成问题,特别是类型要对应,特别有关时间,日期的字段最容易出问题
hhbll_2001 2001-11-28
  • 打赏
  • 举报
回复
不过我弄不清的是SQL中的Smalldatetime对应VB中的类型,是不是Addate?
renxuangigi 2001-11-28
  • 打赏
  • 举报
回复
我也同意kxcc_sx的说法。
hhbll_2001 2001-11-28
  • 打赏
  • 举报
回复
我还没有验证,正在看command.CreateParameter函数。
不管怎样,先谢谢你了!!!
kxcc_sx 2001-11-28
  • 打赏
  • 举报
回复
你的数据类型,比如smalltime对应吗
kxcc_sx 2001-11-28
  • 打赏
  • 举报
回复
你的sql语句验证了吗
kxcc_sx 2001-11-28
  • 打赏
  • 举报
回复
呵呵!只要使用相应的语句;
例如:
将id做为一个参数;进行搜索期间调用的存储过程为search_name
并返回ques_teacher字段的值的代码:
set comm=server.createobject("adodb.command")
comm.activeconnection="dsn=test;uid=sa;pwd=;"
comm.commandtext="search_name"
comm.commandtype=4
//传送参数id
set p1=comm.createparameter("in",129,1,10,id)
comm.parameters.append p1
//输出结果
set p1=comm.createparameter("out",129,2,128,0)
comm.parameters.append p1
comm.execute
ques_teacher=comm(1)
set comm=nothing
下面是
search_name的 存储过程的定义,环境win2000/sql2000/vb6.0

CREATE PROCEDURE search_id
@title char(100),
@outname int output
AS
select @outname=ques_id from reading where title=@title
GO
希望对你有所帮助,呵呵:-)

hhbll_2001 2001-11-28
  • 打赏
  • 举报
回复
比如,存储过程如下
CREATE PROCEDURE a
@code varchar(20),
@Wdate smalldate
as
insert into Stocks(code,wdate)
values(@code,@wdate)

在vb中
Dim a As New ADODB.Parameter
Dim b As New ADODB.Parameter
Dim cmd1 As New ADODB.Command

cmd1.ActiveConnection = cn
cmd1.CommandType = adCmdStoredProc
cmd1.CommandText = "stock_a"

a.Type = adVarChar
a.Size = 10
cmd1.Parameters.Append a

b.Type = adDate ?????
cmd1.Parameters.Append b

a.Value = "aaa"
b.Value = Date
cmd1.Execute
执行时总是出错,为什么??
加载更多回复(1)
相关推荐
发帖
VB基础类

7681

社区成员

VB 基础类
社区管理员
  • VB基础类社区
加入社区
帖子事件
创建了帖子
2001-11-28 11:27
社区公告
暂无公告