用VB6创建存储过程

mmzz_wang 2003-06-02 09:59:23
如果不存在存储过程Sto_A1,就创建它。用VB6.0怎么写?
...全文
176 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
To zjcxc(邹建)
我试了一下,但执行到该句时提示"CREATE TABLE 语句中的语法错误。"
语句为
create Procedure Sto_Tmp
as
select * from tmp
zjcxc 2003-06-02
  • 打赏
  • 举报
回复
哦,忘了,select * from syscolumns
这一句,按照你的要求应该是
select * from tmb
zjcxc 2003-06-02
  • 打赏
  • 举报
回复
这是ADO的代码,DAO除数据库打开方式不同外,应该可以通用.

Option Explicit

'直接新建
Sub test1()
Dim Db As New ADODB.Connection
Dim Sql$

'打开数据库
Db.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=lyt"

'判断是否存在存储过程
If Db.Execute("select * from sysobjects where id=object_id(N'Sto_A1') and objectproperty(id,N'IsProcedure')=1").EOF Then
'不存在,就新建
Sql = "create Procedure Sto_A1" & vbCrLf & _
"as" & vbCrLf & _
"select * from syscolumns"
Db.Execute Sql
End If
End Sub

'在出错时新建
Sub test2()
Dim Db As New ADODB.Connection

Db.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=lyt"

On Error GoTo lbErr

Db.Execute ("sto_a1")
Exit Sub
lbErr:
If Err = -2147217900 Then
'不存在时
test1
Else
MsgBox "错误:" & Error & vbCrLf & "错误号:" & Err
'你的第二个问题,可以在这里通过err来获得错误号
End If
End Sub
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
用DAO,因为很早就开发了,最初用Access2.0,那个时候还没ADO技术呢。后来用SQL Server,现在也不用VB了,因为有些用户嫌数据处理慢,所以想改用存储过程,不会写。ADO的也可以看一看。
zjcxc 2003-06-02
  • 打赏
  • 举报
回复
我很久没有用DAO了
ADO的你要吗?
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
To zjcxc(邹建)
另外,On error 的错误代码是多少?
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
To zjcxc(邹建)
能不能完整写出创建的过程及可执行的语句?
用VB6.0写:
dim db as Database
取db数据库中表tmp中的所有数据,存储过程名为Sto_A1
谢谢
zjcxc 2003-06-02
  • 打赏
  • 举报
回复
那也只需要执行一次啊,不用每次都执行吧?

而且客户重新安装数据库后,应该恢复以前的数据啊!难道他的资料不要了,重新开始?
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
我是希望在程序中自动完成,这样当用户重新安装了数据库后,不必需要他们手工建立存储过程。
zjcxc 2003-06-02
  • 打赏
  • 举报
回复
方法1:
利用on error 语句来判断,如果调用存储过程sto_a1出错,并且出错原因是存储过程不存在,就执行建存储过程的语句

方法2:
直接执行:

if not exists(select name
from sysobjects
where id=object_id('Sto_A1')
and objectproperty(id,N'IsProcedure')=1)
create Procedure Sto_A1
.
.
.
就行啦

liuyun2003 2003-06-02
  • 打赏
  • 举报
回复
用VB去创建存储过程是很难的。不过你可以这么做,建立存储过程, 在其中判断时候有你要的那个存储过程,如果没有的话,就建立。你在程序里调用这个存储过程就可以了。
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
To zjcxc(邹建) :
不管怎么说还是谢谢你
zjcxc 2003-06-02
  • 打赏
  • 举报
回复
那可能是DAO与ADO的区别吧?
我的程序在ADO中测试过,是能正确执行的.
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
我手工在数据库中建了一个存储过程,在执行db.Execute "Sto_tmp",dbSeeChanges语句时提示“不能选定执行查询”,是不是用DAO方式不能用存储过程?
mmzz_wang 2003-06-02
  • 打赏
  • 举报
回复
zjcxc 2003-06-02
  • 打赏
  • 举报
回复
你的数据库中有没有tmp这个表?
如果没有的话就会出错

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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