同时具有返回值、输入参数、输出参数的存储过程

同时具有返回值、输入参数、输出参数的存储进程
前面说过,在调用存储进程时,声明参数的顺序要与存储进程中定义的顺序相同。还有一点要特别注意:如果存储进程同时具有返回值以及输入、输出参数,返回值要最先声明。
为了演示这种情况下的调用方法,我们改善一下上面的例子。还是取得ID为1的用户的用户名,但是有可能该用户不具有(该用户已删除,而USERID是自增长的字段)。存储进程根据用户具有与否,返回不同的值。此时,存储进程和ASP代码如下:

/*SP5*/
CREATE PROCEDURE DBO.GETUSERNAME
--为了加深对"顺序"的印象,将以下两参数的定义顺序颠倒一下
@USERNAME VARCHAR(40) OUTPUT,
@USERID INT
AS
SET NOCOUNT ON
BEGIN
IF @USERID IS NULL RETURN
SELECT @USERNAME=USERNAME
FROM DBO.[USERINFO]
WHERE USERID=@USERID
IF @@ROWCOUNT>0
RETURN 1
ELSE
RETURN 0
RETURN
END
GO

'**调用同时具有返回值、输入参数、输出参数的存储进程**
DIM MYCOMM,USERID,USERNAME
USERID = 1
SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
WITH MYCOMM
.ACTIVECONNECTION = MYCONSTR 'MYCONSTR是数据库连接字串
.COMMANDTEXT = "GETUSERNAME" '指定存储进程名
.COMMANDTYPE = 4 '表明这是一个存储进程
.PREPARED = TRUE '要求将SQL命令先行编译
'返回值要最先被声明
.PARAMETERS.APPEND .CREATEPARAMETER("RETURN",2,4)
'以下两参数的声明顺序也做相应颠倒
.PARAMETERS.APPEND .CREATEPARAMETER("@USERNAME",200,2,40)
.PARAMETERS.APPEND .CREATEPARAMETER("@USERID",3,1,4,USERID)
.EXECUTE
END WITH
IF MYCOMM(0) = 1 THEN
USERNAME = MYCOMM(1)
ELSE
USERNAME = "该用户不具有"
END IF
SET MYCOMM = NOTHING

时间: 2024-09-29 03:39:56

同时具有返回值、输入参数、输出参数的存储过程的相关文章

悬赏如何junit测试返回值void的输出验证码图片功能的servlet!

问题描述 悬赏如何junit测试返回值void的输出验证码图片功能的servlet! 刚接触到验证码生成算法,由于楼主刚入职职场,刚接触junit测试,知道junit是白盒子测试,也只会用代用返回值的测试.现在我要写一个生成验证码的serlvet,此serlvet可以向客户端返回一个验证码的jpg图片.请问如果用junit来测试这个类的生成验证码功能是否生效?我知道难度可能有点大,所以希望大神耐心解答,50分献上! public class ValidateCodeServlet extends

Oracle中自定义函数 无参数 输入参数 输出参数

-- 19-1:建立无参数的函数 CREATE OR REPLACE FUNCTION cur_datetime RETURN VARCHAR2 IS BEGIN RETURN TO_CHAR(sysdate, 'YYYY"年"MM"月"DD"日"HH24″时"MI"分"SS"秒"'); END; / -- 19-2:建立带有输入参数的函数 CREATE OR REPLACE FUNCTION g

返回值-为什么最后输出结果会是0?当被调函数中的if语句不成立时不想要它返回该如何?

问题描述 为什么最后输出结果会是0?当被调函数中的if语句不成立时不想要它返回该如何? #include<stdio.h> char a[15]; int count=0; int fun(int store,int flower,int wine,int i) { if(store>5 || flower>10) return 0; else if(store==5 && flower==10 && i==15) { if(wine==0 &

Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)_MsSql

[sql] -- ===================[创建存储过程]===================== USE [Message] GO /****** Object: StoredProcedure [dbo].[读取外部数据库查询] Script Date: 10/24/2012 05:39:16 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ================================

关于存储过程的ADO调用的一些心得(输出参数,返回值)

ado|存储过程|心得 在一个项目中,我需要用到存储过程来访问数据,为了提供一个比较一致的接口以便调用,我没有使用CreateParameter(),而是调用CommandPtr的Refresh()函数先从数据库中查询参数._ConnectionPtr m_pConn;m_pConn.CreateInstance(__uuidof(Connection));m_pConn->Open("driver={SQL Server};server=127.0.0.1;DATABASE=pub;UI

存储过程的输出参数,返回值与结果集_MsSql

每个存储过程都有默认的返回值,默认值为0.下面我们分别看看在management studio中如何查看输出参数,返回值以及结果集,然后我们再在ASP.NET调用存储过程中如何获得输出参数,返回值以及结果集. 首先:在sql server management studio中查看输出参数,返回值以及结果集.本示例以Northwind数据库为例. 复制代码 代码如下: create proc Employee @Rowcount int=0 output as begin SELECT * FRO

存储过程的输出参数,返回值与结果集

每个存储过程都有默认的返回值,默认值为0.下面我们分别看看在management studio中如何查看输出参数,返回值以及结果集,然后我们再在ASP.NET调用存储过程中如何获得输出参数,返回值以及结果集. 首先:在sql server management studio中查看输出参数,返回值以及结果集.本示例以Northwind数据库为例. 复制代码 代码如下: create proc Employee @Rowcount int=0 output as begin SELECT * FRO

ASP调用带有输入参数和输出参数的存储过程

存储过程 返回值其实是一种特殊的输出参数.在大多数情况下,我们用到的是同时有输入及输出参数的存储过程,比如我们想取得用户信息表中,某ID用户的用户名,这时候,有一个输入参数----用户ID,和一个输出参数----用户名.实现这一功能的存储过程如下:<br><br> <table style="WIDTH: 475px; HEIGHT: 220px" borderColor=#cccccc width=475 align=center bgColor=#e3

Android单元测试 - 验证函数参数、返回值的正确姿势

前言 读者有没发觉我写文章时,喜欢有个前言.序?真相是,一半用来装逼凑字数,一半是因为不知道接下来要写什么,先闲聊几句压压惊^_^ 哈哈哈......该说的还是要说. 上一篇<Android单元测试 - Sqlite.SharedPreference.Assets.文件操作 怎么测?> 讲了一些DAO(Data Access Object)单元测试的细节.本篇讲解参数验证. 验证参数传递.函数返回值,是单元测试中十分重要的环节.笔者相信不少读者都有验证过参数,但是你的单元测试代码真的是正确的吗