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

hhbll_2001 2001-11-28 11:27:28
存储过程中定义了一个Smalldatetime的参数,在VB中调用此存储过程,怎样设置
该参数的属性。盼各位帮忙
...全文
945 21 打赏 收藏 举报
写回复
用AI写文章
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)
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 DE1-SOC开发套件是采用Altera的Cyclone V SoC FPGA构建的一个硬件平台,它为嵌入式系统的开发者们构建了一个融合了处理器与FPGA功能的集成实验平台。这份用户手册系统性地阐述了运用这款开发板开展项目开发及学习的方法。 第1章:DE1-SOC开发套件 在这一章节中,主要阐述了DE1-SOC开发套件的核心构成,包括用户在采购时可以预见的包装构成。通常,开发套件会包含DE1-SOC主板、电源适配器、连接线缆以及必须的软件和文档光盘。除此之外,用户还可以了解到如何获取帮助和支持,以便在遭遇问题时能够迅速处理。 第2章:DE1-SOC主板介绍 本章深入剖析了DE1-SOC主板的设计布局和构成组件。开发者可以认识到主板上的各种物理构成部分,例如GPIO接口、存储器、处理器等。同时,通过板级的模块图示,用户能够掌握各个模块的功能及其相互间的连接联系,这对于把握系统的整体构造非常关键。 第3章:使用DE1-SOC主板 在这一部分,用户将学习到如何设置和运用DE1-SOC主板。介绍了FPGA配置模式的设定,这是将用户设计加载至FPGA的必要步骤。随后,详细说明了如何配置Cyclone V SoC FPGA,这个过程可能需要运用硬件描述语言(比如Verilog或VHDL)编程和Quartus II这类集成开发环境。接下来,本章还涵盖了板级状态组件,这些组件展示了FPGA和系统的运行情形,对于故障诊断十分有益。此外,板上复位组件的应用方法也在此部分提供,确保用户能够准确控制系统的启动和重置。关于时钟电路的说明,解释了如何管理和生成不同频段的时钟信号,这对构建高性能数字系统来...

7,788

社区成员

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

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