SQL存储过程如何将结果放入变量?

来源:百度知道 编辑:UC知道 时间:2024/07/04 15:11:20
CREATE PROCEDURE iuser.signin_verify
@user_name nvarchar(32),
@user_pwd nvarchar(32),
@signin_result bit output,
@user_type nvarchar(10) output,
@user_last_login smalldatetime output,
@user_email nvarchar(60) output,
@user_location nvarchar(20) output,
@user_homepage nvarchar(100) output,
@user_qq nvarchar(13) output,
@user_msn nvarchar(50) output,
@user_skype nvarchar(20) output,
@user_gender smallint output,
@user_blogger bit output,
@user_disabled bit output
AS
select user_name,user_last_login,user_email,user_location,user_homepage,user_qq,user_msn,user_skype,user_gender,user_blogger,user_disabled from user_db where (user_name = @user_name and user_pwd = @user_pwd)
GO

我想将各个查询结果放入变量,比如user_name列的值放入@user_name,但是我在后面加上
set @user_name = user_name
提示列user_name无效,请问这个存储过程如何写?
1楼的,这个似乎对我的问题没有什么帮助耶

2楼的,你那种方法确实可以,但是我想知道,现在我这条查询语句返回多个列,如何将他们全部装入变量那?

怎么都这么长啊。
两种做法:
set @user_name = (select user_name from ...)
select @user_name = username .... from ... where...

自己发挥一下就行了
1.
set @user_name = (select user_name from ...)
set @user_pwd = (select user_pwd from ...)
.
.
.
2.
select @user_name = username, @user_pwd = user_pwd, ...from ... where...

查询计划缓存及各种 SET 选项(与 showplan 相关及其他)
各种 SET 选项——多数与 showplan 相关——以多种复杂的方式影响着查询计划和执行上下文的编译、缓存和重用。下表汇总了相关的详细信息。

应按如下顺序阅读该表中的内容。批处理通过表中第一列所指定的特定模式提交给 SQL Server。已提交的批处理的计划缓存中可能存在、也可能不存在已缓存的查询计划。第 2 列和第 3 列描述了存在已缓存的查询计划时的情况;第 4 列和第 5 列说明了不存在已缓存的查询计划时的情况。在每个类别中,查询计划和执行上下文的各种情况都是独立的。表中说明了结构(查询计划或执行上下文)所发生的情况:是否被缓存、重用和使用。

模式名称 存在已缓存的查询计划时 存在已缓存的查询计划时 不存在已缓存的查询计划时 不存在已缓存的查询计划时

查询计划
执行上下文
查询计划
执行上下文

showplan_text, showplan_all, showplan_xml
被重用(无编译)
被重用
被缓存(编译)
生成一个执行上下文,对其进行缓存但不使用它

statistics profile, statistics xml, statistics