当前位置:首页 » 编程语言 » sql输出参数

sql输出参数

发布时间: 2022-05-27 02:54:24

sql server 中 一个要输入参数和输出参数的存储过程。

1、首先我们需要打开SQL Server Managment管理工具,新建一个表。

Ⅱ sql 存储过程里面输出参数是什么意思就是后面加个output 那种参数,和其他参数有什么不一样

其他参数要提前赋值,而output不需要提前赋值,只需要提供一个变量,在存储过程执行完的时候,output类型的变量值就会修改,获得返回值,只能通过这个方法获得返回值,而不能像函数一样直接返回结果。因为存储过程是没有返回值的。

Ⅲ SQL查询语句selete语句中,输出参数调用怎么用

DECLARE @NUM INT
EXEC QUERY_CLASS '001',@NUM OUTPUT
SELECT @NUM
创建完存储过程后面加个GO执行批处理
create procere query_class(@class_no nchar(6),@num int output )
as select @num=count(s_no)
from Student
where class_no=@class_no
GO

Ⅳ 存储过程中如何执行带输出参数的动态SQL

SQL Server存储过程中执行带输出参数的动态sql是很多人经常碰到的问题,比如根据一些条件查询列表,并返回记录数等。下面是一个参考示例,查询用户列表,它可以利用临时表实现翻页,并带有死锁和超时检测功能。 CREATE PRocere pUserList ( @UserType char(2), @pagenum int, @perpagesize int, @pagetotal int out, @rowcount int out ) as set nocount on DECLARE @Err INT,@ErrCounter INT declare @sql nvarchar(2000) --声明动态sql执行语句 declare @pagecount int --当前页数 declare @sWhere nvarchar(200) declare @sOrder nvarchar(100) set @sWhere = ' where 1=1 ' if not(@UserType is null) set @sWhere = @sWhere + ' and UserType = ' + @UserType set @sOrder = ' order by UserID ' --取得当前数据库的记录总数 declare @row_num int LockTimeOutRetry: --创建临时表,作为数据过滤 create table #change (T_id int) set @sql = 'select @row_num=count(*) from dbo.[User]' + @sWhere exec sp_executesql @sql,N'@row_num int output', @row_num output if @row_num % @perpagesize =0 set @pagetotal = @row_num/@perpagesize else set @pagetotal = @row_num/@perpagesize + 1 set @rowcount = @row_num if @row_num > @perpagesize begin set @row_num = @pagenum * @perpagesize if @row_num = @perpagesize begin set @sql = N'select top ' + cast(@perpagesize as varchar) + ' UserID,LoginName,RealName from dbo.[User]' + @sWhere + @sOrder exec sp_executesql @sql SET @Err = @@ERROR IF @Err <> 0 GOTO ErrorHandler return 0 end else begin set @row_num = (@pagenum-1) * @perpagesize set @pagecount = @row_num set @sql=N'insert #change (T_id) select top ' + cast(@pagecount as varchar) + ' UserID from dbo. [User] '+@sWhere+' and UserID not in (select T_id from #change)' + @sOrder exec sp_executesql @sql set @sql = N'select top ' + cast(@perpagesize as varchar) + ' UserID,LoginName,RealName from dbo.[User] '+@sWhere+' and UserID not in (select T_id from #change)' + @sOrder exec sp_executesql @sql SET @Err = @@ERROR IF @Err <> 0 GOTO ErrorHandler return 0 end end else begin set @sql = 'select UserID,LoginName,RealName from dbo.[User]' + @sWhere + @sOrder exec sp_executesql @sql SET @Err = @@ERROR IF @Err <> 0 GOTO ErrorHandler return 0 end ErrorHandler: IF (@Err = 1222 OR @Err = 1205) AND @ErrCounter = 5 BEGIN RAISERROR ('Unable to Lock Data after five attempts.', 16,1) return -100 END IF @Err = 1222 OR @Err = 1205 -- Lock Timeout / Deadlock BEGIN WAITFOR DELAY '00:00:00.25' SET @ErrCounter = @ErrCounter + 1 GOTO LockTimeOutRetry END -- else unknown error RAISERROR (@err, 16,1) WITH LOG return -100 GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO

Ⅳ SQL数据库输出参数问题

CREATE PROC proc_UserInfo_LdTimes
@Phone nvarchar(50),@DlTimes nvarchar(50) output
AS
BEGIN
SELECT @DlTimes=DlTimes FROM UserInfo WHERE Phone=@Phone
END

Ⅵ SQL为什么要用输出参数,还有他的作用是什么

储存过程本身有一个返回值, 但是这个返回值并不是让你返回运算结果的, 而是用来返回一个执行状态(也就是错误代码), 通常返回0表示正常, 而真正处理出来的数据要么select出来, 要么用output参数
另外, 如果一个存储过程要返回多个值, 你用他那个返回值也不够啊
还有一点, 如果你用EF的话, 他是没有办法接收到他的返回结果的

Ⅶ sql存储过程 输出参数

SQL存储过程输出参数:

--===================【创建存储过程】=====================

USE[Message]
GO
/******Object:StoredProcere[dbo].[读取外部数据库查询]ScriptDate:10/24/201205:39:16******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
--=============================================\Working没有变1,错误码没有测试,计划时间测试,企业名称

createPROCEDURE[dbo].[数据库查询]
@SmsContentvarchar(20)='1231',--输入参数
@bj1intout--输入出参数

AS
BEGIN

SELECT@bj1=count(Id)fromsss

END


--===============【调用】==================

USE[Message]

DECLARE@return_valueint

EXEC[dbo].[数据库查询]'1231',@return_valueoutput

SELECT@return_value

Ⅷ 动态sql语句如何输出多个参数

DECLARE @FORM_KIND VARCHAR(50)
DECLARE @FORM_NO VARCHAR(50)
DECLARE @Sql NVARCHAR(1000)
declare @X nvarchar(500)
declare @Y nvarchar(500)
set @form_kind='SYS.FORM.008';
set @form_no=12500;

SET @Sql ='select 1 as num, tah.travel_purpose || ''$$'' || tah.bu_code || ''$$'' || tah.ou_code document_summary from bpm.bpm_tes_flow f,bpm.bpm_tes_ta_head tah where tah.ta_head_id=f.source_id and f.source_category=''TA''
and f.form_kind='''+@form_kind+''' and f.form_no=12500';
print @Sql
SET @Sql = 'SELECT @A=document_summary,@B=num FROM OPENQUERY(ORACLE_ERP, ''' + REPLACE(@Sql, '''', '''''') + ''')'
exec sp_executesql @Sql,N'@A NVARCHAR(500) output,@B NVARCHAR(50) OUTPUT',@X output,@Y OUTPUT
PRINT @X+'============'+@Y

Ⅸ PHP得到mssql的存储过程的输出参数功能实现

在开发过程中可能会遇到无法取得MSSQL存储过程的输出参数,很多朋友都不知道该怎么办,本文将详细介绍PHP得到mssql的存储过程的输出参数功能实现,需要了解的朋友可以参考下
复制代码
代码如下:
<?
$conn=mssql_connect("127.0.0.1","user","passwd");
mssql_select_db("mydb");
$stmt=mssql_init("pr_name",$conn);//
$a=50001;
mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR);
//用于直接返回return
-103此类的值。
mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,true);//用于返回在存储过程中定义的输出参数
mssql_bind($stmt,"@invar",$a,SQLINT4);
$result
=
mssql_execute($stmt,true);//不能返回结果集,只能得到输出参数
//$result
=
mssql_execute($stmt,false);
//返回结果集
//$records=mssql_fetch_array($result);
//print_r($records);
//mssql_next_result($result);下一个结果集,当等于FALSE的时候下一个就是输出参数
echo
$b;
echo
$val;
?>
下面这些是从别的地方看到的。
小麻烦:
我们按照惯例使用了一个MS
Sql
Server的存储过程procA,它给出了一个输出参数nReturn,
而且返回了一个结果集。
在如何让PHP调用这个procA的时候,我们遭遇了一点小麻烦。
鱼肉和熊掌不可兼得:
我们本来希望这样的代码能够既得到输出参数,又得到返回的结果集:
复制代码
代码如下:
//
初始化要传进存储过程的参数们:
$nYear
=
2004;
$nPageSize
=
20;
$nPageNo
=
1;
//
Initializes
a
stored
procere:
$stmt
=
mssql_init("proc_stat_page",
$db_mssql->Link_ID);
//
绑定输入参数:
mssql_bind($stmt,
"@nReturn",
$nReturn,
SQLINT4,
TRUE);
mssql_bind($stmt,
"@nYear",
$nYear,
SQLINT4);
mssql_bind($stmt,
"@nPageSize",
$nPageSize,
SQLINT4);
mssql_bind($stmt,
"@nPageNo",
$nPageNo,
SQLINT4);
//
执行存储过程,得到QueryID:
$db_mssql->Query_ID
=
mssql_execute($stmt,false);
虽然得到了结果集,但是,这样$nReturn参数是拿不到输出参数的。
如果把最后一句话改为:
$db_mssql->Query_ID
=
mssql_execute($stmt,true);
输出参数倒是拿到了,结果集又没有了。
好像是一个鱼肉和熊掌不可兼得的样子。
难道PHP连这个都做不到?PHP手册中也没有讲这个问题。
来自于PHP维护者的解释:
原本我们这种调用办法是PHP
4.3版本之前肯定是支持的。
“但是,自从PHP
4.3版本之后,”他们说,“为了能够兼容存储过程返回多个结果集,PHP改变这个特性。”
“如果你不需要结果集,你应该设置mssql_execute的第二个可选参数为TRUE,这样mssql_execute方法之后你就可以得到输出参数了。”
“如果你需要返回的结果集们,你应该为每一个结果集调用一次mssql_next_result。在最后一个结果集返回之后,你再调用mssql_next_result就会得到返回值FALSE,这时候,你就可以访问输出参数了。”
解决:
在最后我们补上一句话:
//
After
the
last
result
has
been
returned
the
return
value
will
have
the
value
returned
by
the
stored
procere.
mssql_next_result($db_mssql->Query_ID);
立刻,魔法生效了:
PHP填充了正确的输出参数到$nRetVal里。

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

[sql]
--
===================【创建存储过程】=====================
USE
[Message]
GO
/******
Object:
StoredProcere
[dbo].[读取外部数据库查询]
Script
Date:
10/24/2012
05:39:16
******/
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
--
=============================================
\\
Working没有变1,错误码没有测试,计划时间测试,企业名称
create
PROCEDURE
[dbo].[数据库查询]
@SmsContent
varchar(20)='1231',
--
输入参数
@bj1
int
out
--
输入出参数
AS
BEGIN
SELECT
@bj1=count(Id)
from
sss
END
--
===============【调用】==================
USE
[Message]
DECLARE
@return_value
int
EXEC
[dbo].[数据库查询]
'1231',@return_value
output
SELECT
@return_value

热点内容
怎么创建密码重置盘 发布:2025-02-12 16:36:59 浏览:675
php读取时间 发布:2025-02-12 16:23:48 浏览:385
祛痘液如何配置 发布:2025-02-12 16:21:22 浏览:748
安卓手机如何拷贝电脑里 发布:2025-02-12 16:16:30 浏览:860
linux怎么编译内核 发布:2025-02-12 16:03:02 浏览:189
新的怎么注册微信账号密码忘了怎么办 发布:2025-02-12 15:50:08 浏览:659
android代码搜索 发布:2025-02-12 15:45:36 浏览:778
矢量图算法 发布:2025-02-12 15:43:53 浏览:193
python量化投资入门 发布:2025-02-12 15:34:17 浏览:175
苹果的天气跟安卓的天气哪个准 发布:2025-02-12 15:33:37 浏览:313