ASP程序与SQL存储过程结合使用详解
来源:asp之家 发布时间:2011-03-25 10:50:00
定义总是很抽象。存储进程其实就是能完成一定操作的一组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 MYRST = SERVER.CREATEOBJECT("ADODB.RECORDSET")
MYRST.OPEN "GETUSERLIST",MYCONSTR,0,1,4
'MYCONSTR是数据库连接字串,最后一个参断含义与COMMANDTYPE相同
猜你喜欢
- 如下所示:INPUT = c_int * 4# 实例化一个长度为2的整型数组input = INPUT()# 为数组赋值(input这个数组
- 1. axis的基本使用axis常常用在numpy和tensorflow中用到,作为对矩阵(张量)进行操作时需要指定的重要参数之一。设定ax
- 字符串的编码格式什么是编码格式?通俗来讲,编码格式就是编码的规则在脚本的开头指定编码格式,来告诉操作系统根据什么编码规则来解析代码常见的编码
- isnull在数据库查询中的应用,特别是再语句连接的时候需要用到 比如连接时候,某个字段没有值但是又要左连接到其他表上 就会显示空, isn
- 下面这段代码是asp编写的用来识别客户端是否为手机浏览器,以及手机类型的代码。主要用于手机网站的建设,以便实现相同网址下的不同版本网站(比如
- 发现问题项目需要,需要删除文件夹中的冗余图片。涉及图像文件名的操作,图像文件名存储在list中python list删除元素有remove(
- 在日常工作中,除了需要从 JSON 转化为 Go 的数据结构。但往往相反的情况是:我们需要将数据以 JSON 字符串的形式发送到 Web 服
- 一、在访客的内心深处做导航我讨厌迷失,不管是在道路上或是在线网络上。猜想一下?您的访客也是这样的。就像我们期望看到的道路上的路标一样,来帮助
- 学生成绩管理系统简介一个带有登录界面具有增减改查功能的学生成绩管理系统(面向对象思想,利用tkinter库进行制作,利用.txt文件进行存储
- 一、为什么要包管理默认Go的第三方包都是放在Gopath的src目录下,而且这些包都没有版本号的概念,这样的可能会出现一些问题。举个例子:当
- 或许现在关心交互设计的设计师们大部分来自于了互联网行业,所以我们看到当你搜索“交互设计”时更多的BLOG和文章是在谈论互联网,网站的导航,注
- 又一个js加密工具:js混淆,完整源代码如下,有点长呵呵:<HTML><HEAD><TITLE>Cunf
- 本文实例讲述了Python with关键字,上下文管理器,@contextmanager文件操作。分享给大家供大家参考,具体如下:demo.
- 1、执行环境说明python版本3.7直接使用pip进行安装pywin32、pyinstallerpip install pywin32pi
- 前言没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。你必须特别努力,才能显得毫不费力。希望:所以说,树倒了,没
- 前言:泛型是静态类型语言的基本特征,允许将类型作为参数传递给另一个类型、函数、或者其他结构。TypeScript 支持泛型作为将类型安全引入
- asp编程手工定义参数的方法: Dim con As ADODB.Connection
- 1.先找到迁移服务器上的Data文件,我安装的是mysql5.7,默认安装的路径。那么就是在C:\ProgramData\MySQL文件里面
- 在做前端界面开发的时候,遇到需要改变颜色的需求,就需要使用颜色选择器。针对这个问题,第一想法,自然是H5提供了input color,可以实
- 本文实例讲述了Django框架模型简单介绍与使用。分享给大家供大家参考,具体如下:ORM介绍ORM Object relational ma