ASP程序与SQL存储过程结合使用详解
存储进程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
定义总是很抽象。存储进程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL SERVER)。如果我们通过创建存储进程以及在ASP中调用存储进程,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个:
第一、大大提高效率。存储进程本身的执行速度非常快,而且,调用存储进程可以大大减少同数据库的交互次数。
第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
在ASP中,一般通过COMMAND对象调用存储进程,根据不同情况,本文也介绍其它调用方法。为了方便说明,根据存储进程的输入输出,作以下简单分类:
1. 只返回单一记录集的存储进程
假设有以下存储进程(本文的目的不在于讲述T-SQL语法,所以存储进程只给出代码,不作说明):
/*SP1*/
CREATE PROCEDURE DBO.GETUSERLIST
AS
SET NOCOUNT ON
BEGIN
SELECT * from DBO.[USERINFO]
END
GO
以上存储进程取得USERINFO表中的所有记录,返回一个记录集。通过COMMAND对象调用该存储进程的ASP代码如下:
'**通过COMMAND对象调用存储进程**
DIM MYCOMM,MYRST
SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
MYCOMM.ACTIVECONNECTION = MYCONSTR 'MYCONSTR是数据库连接字串
MYCOMM.COMMANDTEXT = "GETUSERLIST" '指定存储进程名
MYCOMM.COMMANDTYPE = 4 '表明这是一个存储进程
MYCOMM.PREPARED = TRUE '要求将SQL命令先行编译
SET MYRST = MYCOMM.EXECUTE
SET MYCOMM = NOTHING
存储进程取得的记录集赋给MYRST,接下来,可以对MYRST进行操作。
在以上代码中,COMMANDTYPE属性表明请求的类型,取值及说明如下:
-1 表明COMMANDTEXT参数的类型无法确定
1 表明COMMANDTEXT是一般的命令类型
2 表明COMMANDTEXT参数是一个具有的表名称
4 表明COMMANDTEXT参数是一个存储进程的名称
还可以通过CONNECTION对象或RECORDSET对象调用存储进程,方法分别如下:
'**通过CONNECTION对象调用存储进程**
DIM MYCONN,MYRST
SET MYCONN = SERVER.CREATEOBJECT("ADODB.CONNECTION")
MYCONN.OPEN MYCONSTR 'MYCONSTR是数据库连接字串
SET MYRST = MYCONN.EXECUTE("GETUSERLIST",0,4) '最后一个参断含义同COMMANDTYPE
SET MYCONN = NOTHING
'**通过RECORDSET对象调用存储进程**
DIM MYRST
SET
相关文档:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER function [dbo].[Get_StrArrayStrOfIndex]
(
@str varchar(1024), --要分割的字符串
@split varchar(10), --分隔符号
@index int --取第几个元素
)
returns varchar(1024)
as
begin
declare @location int
de ......
sql查询中显示序号
2009-06-04 09:27
/* 方法一*/
SELECT序号= (SELECT COUNT(客户编号) from 客户 AS LiMing
WHERE LiMing.客户编号<= Chang.客户编号),
客户编号,公司名称
from客户 AS Chang ORDER BY 1;
G ......
1: /*
2: 通过SQL 语句备份数据库
3: */
4: BACKUP DATABASE mydb
5: TO DISK ='C:\DBBACK\mydb.BAK'
6: --这里指定需要备份数据库的路径和文件名,注意:路径的文件夹是必须已经创建的.文件名可以使用日期来标示
7:
8: /*
9: 通过SQL语句还原数据库
10: */
11: USE ma ......
ASP连接数据库
ASP连接11种数据库语法总结
经常使用到有关数据库的操作。包括连接代码、SQL命令等等,又不曾刻意去记忆它们(我本人是不愿意去记这东东),所以常常在用到的时候又去查书本,翻来翻去。一些比较少用的数据库还不一定能顺利找到,所以现在把它们全归纳到这里,提供大家参考。
<一>数据 ......
<%
set conn=server.createobject("adodb.connection")
conn.connectionstring="PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER=210.76.209.130;DATABASE=databasename;UID=sa;PWD=password;"
conn.open
%>
其中 210.76.209.130 就是远程服务器的IP
二、我用VB写了个管理软件,并采取PING远程服务器域名的 ......