ASP程序与SQL存储过程结合使用详解(3)
来源:asp之家 发布时间:2011-03-25 10:50:00
3. 有返回值的存储进程
在进行类似SP2的操作时,应充分利用SQL SERVER强大的事务处理功能,以维护数据的一致性。并且,我们可能需要存储进程返回执行情况,为此,将SP2修改如下:
/*SP3*/
CREATE PROCEDURE DBO.DELUSERALL
AS
SET NOCOUNT ON
BEGIN
BEGIN TRANSACTION
DELETE FROM DBO.[USERINFO]
IF @@ERROR=0
BEGIN
COMMIT TRANSACTION
RETURN 1
END
ELSE
BEGIN
ROLLBACK TRANSACTION
RETURN 0
END
RETURN
END
GO
以上存储进程,在DELETE顺利执行时,返回1,否则返回0,并进行回滚操作。为了在ASP中取得返回值,需要利用PARAMETERS集合来声明参数:
'**调用带有返回值的存储进程并取得返回值**
DIM MYCOMM,MYPARA
SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
MYCOMM.ACTIVECONNECTION = MYCONSTR 'MYCONSTR是数据库连接字串
MYCOMM.COMMANDTEXT = "DELUSERALL" '指定存储进程名
MYCOMM.COMMANDTYPE = 4 '表明这是一个存储进程
MYCOMM.PREPARED = TRUE '要求将SQL命令先行编译
'声明返回值
SET MYPARA = MYCOMM.CREATEPARAMETER("RETURN",2,4)
MYCOMM.PARAMETERS.APPEND MYPARA
MYCOMM.EXECUTE
'取得返回值
DIM RETVALUE
RETVALUE = MYCOMM(0) '或RETVALUE = MYCOMM.PARAMETERS(0)
SET MYCOMM = NOTHING
在MYCOMM.CREATEPARAMETER("RETURN",2,4)中,各参数的含义如下:
第一个参数("RETURE")为参数名。参数名可以任意设定,但一般应与存储进程中声明的参数名相同。此处是返回值,我习气上设为"RETURE";
第二个参数(2),表明该参数的数据类型,具体的类型代码请参阅ADO参考,以下给出常用的类型代码:
ADBIGINT: 20 ;
ADBINARY : 128 ;
ADBOOLEAN: 11 ;
ADCHAR: 129 ;
ADDBTIMESTAMP: 135 ;
ADEMPTY: 0 ;
ADINTEGER: 3 ;
ADSMALLINT: 2 ;
ADTINYINT: 16 ;
ADVARCHAR: 200 ;
对于返回值,只能取整形,且-1到-99为保留值;
第三个参数(4),表明参数的性质,此处4表明这是一个返回值。此参数取值的说明如下:
0 : 类型无法确定; 1: 输入参数;2: 输入参数;3:输入或输出参数;4: 返回值
以上给出的ASP代码,应该说是完整的代码,也即最复杂的代码,其实
SET MYPARA = MYCOMM.CREATEPARAMETER("RETURN",2,4)
MYCOMM.PARAMETERS.APPEND MYPARA
可以简化为
MYCOMM.PARAMETERS.APPEND MYCOMM.CREATEPARAMETER("RETURN",2,4)
甚至还可以继续简化,稍后会做说明。
对于带参数的存储进程,只能使用COMMAND对象调用(也有资料说可通过CONNECTION对象或RECORDSET对象调用,但我没有试成过)。


猜你喜欢
- 前言首先是本文总体代码,改一下图像的读取路径就可以运行了,但我还是建议大家先看后面的步骤一行行敲代码,这样效果更好:""
- 该代码主要是基于python实现判断指定文件夹下是否存在指定后缀的文件。代码如下:import osYour_Dir='你的文件夹/
- 对比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 Session 是以
- 很多时候我们获取到一个列表后,这个列表并不满足我们的需求,我们需要的是一个有特殊顺序的列表.这时候就可以使用list.sort方法和内置函数
- Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。
- 选择排序选择排序(selection sort)是一种原地(in-place)排序算法,适用于数据量较少的情况。由于选择操作是基于
- 硬币兑换问题:给定总金额为A的一张纸币,现要兑换成面额分别为a1,a2,....,an的硬币,且希望所得到的硬币个数最少。# 动态规划思想
- 当需要再次安装SQL Server时,如果序列号找不到了,可以试着从已经安装的实例里找回序列号,因为安装完SQL Server后,序列号(P
- 实现效果通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片。效果如下:目录结构实现示例#
- 一、Pyecharts简介和安装1、简介Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的
- 如下所示:import pymysqlimport timeimport redef get_raw_label(rece): re1 =
- ThinkPHP提供的视图查询应用功能十分强大,用户利用视图查询功能可以将多个数据表的字段内容按需要进行指定和筛选,组织成一个基于这些数据表
- 本文实例讲述了js实现简单的联动菜单效果。分享给大家供大家参考。具体如下:这是一个最简单的js联动菜单代码,在DW里可以自动生成,不想在DW
- 实战场景初学 Python 爬虫,十之八九大家采集的目标是网页,因此快速定位到网页内容,就成为我们面临的第一道障碍,本篇博客就为你详细说明最
- 引言现在本地创建一个excel表,以及两个sheet,具体数据如下:sheet1: sheet2:读取excel文件pandas.
- 近期将公司的MySQL架构升级了,由原先的一主多从换成了DRBD+Heartbeat双主多从,正好手上有一个电子商务网站新项目也要上线了,用
- python数据拟合主要可采用numpy库,库的安装可直接用pip install numpy等。1. 原始数据:假如要拟合的数据yyy来自
- 兄弟组件之间的通信同样是在项目中经常会遇到的组件间的通信问题之一, 这种问题的最根本方法就是: 把兄弟组件内部的变量提升到一个中央仓库。借助
- 由于谷歌浏览器80以后版本采用了新的加密方式,所以记录在这里# -*- coding:utf-8 -*-import osimport js
- 前言:re模块(正则表达)是Python中的重要组成部分,这里涉及到字符串的匹配,转换,自定义格式化…&hel