asp.net(VB)中存储过程的使用方法(与直接执行SQL语句基本相同,不同之处在于红色字体部位) '连接数据库(使用udl文件链接数据库) Dim DBPath as string = server.MapPath("condb.udl") Dim conn AS OleDBConnection = New OleDBConnection("File Name =" & DBPath) conn.Open()
'存储过程名称:YW_HRHSXX_1 Dim prostr As String = "YW_HRHSXX_1('2003','01',1,1,1,1,'2003-02-08','hddd','1','2','3','4','1','2','3','4','1','2')" '定义执行对象 Cmd = New OLEDBCommand(prostr, conn) '设置执行语句类型为存储过程 Cmd.CommandType=CommandType.StoredProcedure '执行存储过程 Cmd.ExecuteNonQuery() Cmd.connection.close() conn.close()
'连接数据库(使用udl文件链接数据库)
Dim DBPath as string = server.MapPath("condb.udl")
Dim conn AS OleDBConnection = New OleDBConnection("File Name =" & DBPath)
conn.Open()
'存储过程名称:YW_HRHSXX_1
Dim prostr As String = "YW_HRHSXX_1('2003','01',1,1,1,1,'2003-02-08','hddd','1','2','3','4','1','2','3','4','1','2')"
'定义执行对象
Cmd = New OLEDBCommand(prostr, conn)
'设置执行语句类型为存储过程
Cmd.CommandType=CommandType.StoredProcedure
'执行存储过程
Cmd.ExecuteNonQuery()
Cmd.connection.close()
conn.close()
清华大学出版社 出版
SQL Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server数据库服务器来完成,以实现某个任务,这种方法就是存储过程。
在SQL Server中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。 1.2创建存储过程
在SQL Server中,可以使用三种方法创建存储过程 :
①使用创建存储过程向导创建存储过程。
②利用SQL Server 企业管理器创建存储过程。
③使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。 最常用的创建存储过程方法:
使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。
使用工具:SQL Server 查询分析器1.3创建存储过程时,需要确定存储过程的三个组成部分:
①所有的输入参数以及传给调用者的输出参数。
②被执行的针对数据库的操作语句,包括调用其它存储过程的语句。
③返回给调用者的状态值,以指明调用是成功还是失败。1.4使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程
创建存储过程前,应该考虑下列几个事项:
①不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。
②创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。
③存储过程是数据库对象,其名称必须遵守标识符规则。
④只能在当前数据库中创建存储过程。
⑤一个存储过程的最大尺寸为128M。1.5使用CREATE PROCEDURE创建存储过程的语法形式如下:
CREATE PROC[EDURE]procedure_name[;number]
[{@parameterdata_type}
[VARYING][=default][OUTPUT]
][,...n]
WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FORREPLICATION]
AS sql_statement [ ...n ] 1.6用CREATE PROCEDURE创建存储过程的语法参数的意义如下:
procedure_name: 用于指定要创建的存储过程的名称。
@parameter: 过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。
data_type: 用于指定参数的数据类型。
VARYING: 用于指定作为输出OUTPUT参数支持的结果集。
Default: 用于指定参数的默认值。
OUTPUT: 表明该参数是一个返回参数。
RECOMPILE: 表明 SQL Server 不会保存该存储过程的执行计划 。
ENCRYPTION : 表示 SQL Server 加密了 syscomments 表,该表的text字段是包含 CREATE PROCEDURE 语句的存储过程文本。
FOR REPLICATION:用于指定不能在订阅服务器上执行为复制创建的存储过程。
AS: 用于指定该存储过程要执行的操作。
sql_statement: 是存储过程中要包含的任意数目和类型的 Transact-SQL 语句。
2. 存储过程的实际应用
2.1创建存储过程
创建存储过程工具:SQL Server查询分析器
创建方法:
例(一): 添加、修改、删除类存储过程
use base
go-- 名称:gsk_add
-- 功能:添加公司信息
-- 返回:① 标准结果集
-- ② 无其它结果集
if exists (select * from sysobjects where name = 'gsk_add')
drop proc gsk_add
gocreate proc gsk_add
@m_gsmc nvarchar(20),
@m_glydm char(8),
@dm char(2) output,
@ret nvarchar(50) output
with encryption as
declare @m_bzxx varchar(50),
@m_psxx varchar(2000),
@p_gsdm char(2)
if exists(select * from gsk where gsmc = @m_gsmc)
select @m_bzxx='公司名称:'+@m_gsmc
select @m_psxx='【错误类型】 登记重复'
exec czls_add @m_glydm,'添加公司信息','0',@m_bzxx,@m_psxx,'00'
select @ret = '公司信息添加失败,名称重复!'
return
end begin tran
insert gsk(gsdm, gsmc, deleted) values('', @m_gsmc,'0')
if @@error <> 0
begin
rollback tran
select @ret = '服务器出错,您提交的数据可能有误!'
return
end declare @curid int
select @curid = max(orderID) from gsk
select @p_gsdm = dbo.GetDmValue(@curid,2)
update gsk set gsdm = @p_gsdm where orderID = @curid
if @@error <> 0
begin
rollback tran
select @ret = '服务器出错,您提交的数据可能有误!'
return
end
commit tran select @m_bzxx='公司代码:'+@p_gsdm+' ['+@m_gsmc+']'
select @m_psxx='【系统提示】 登记成功'
exec czls_add @m_glydm,'添加公司信息','1',@m_bzxx,@m_psxx,'00'
select @dm = @p_gsdm, @ret = ''
return
go例(二)查询类存储过程
-- 名称:xpqk_cx
-- 功能:条件查询小片区库信息
-- 返回:① 标准结果集
-- ② 无其它结果集
if exists (select * from sysobjects where name='xpqk_cx')
drop proc xpqk_cx
go