首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程回来一条记录

2013-08-04 
存储过程返回一条记录你好我写了一个存储过程,让返回给定名字的人的信息.如何写一个传出参数将这个记录返

存储过程返回一条记录
你好
   我写了一个存储过程,让返回给定名字的人的信息.
   如何写一个传出参数将这个记录返回来呢?
[解决办法]
@参数 类型 output
as 
 set @参数='值'
[解决办法]
--完整示例:
create PROCEDURE judge_sunday @count int output
as
begin
declare @startDate datetime,@endDate datetime,@numDays int--,@count int
set @startDate = DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
set @endDate = DATEADD(day,-1,DATEADD(mm,1,@startDate))
set @numDays = datediff(day, @startDate, @endDate) + 1;

With NumDays as
(
    select top(@numDays) row_number() over(order by (select 0)) as n from sys.objects
)
select @count=count(*) from NumDays
where DATEPART(WEEKDAY,convert(varchar(10), dateadd(day, NumDays.n - 1, @startDate), 120))=1
return @count
end

--执行
declare @count int;
exec  @count=judge_sunday @count;
select @count
[解决办法]
你执行完存储过程,让结果直接select 一行你想要的结果,不是一样吗?
为何非要out 参数返回一条记录?

[解决办法]
一个int类型怎么可能保存一条记录?直接select,不用返回了。
[解决办法]
不过用string返回倒也可以,将记录拼接赋值给返回参数。
[解决办法]

引用:
姓名 年龄 钱
张三 30  100
李四 40  400
国五 45  1000

给条件  @name='张三'
存储过程返回 张三 30 100

效果和 select * from 表 where 姓名='张三' 相同

上面的好像只返回一个记录数呀


create proc [存储过程名]
(@name varchar(20))
as
begin
 select * 
  from [表名]
  where 姓名=@name
end

------解决方案--------------------


可以用Table Value Function 来实现
[解决办法]

引用:
Quote: 引用:

姓名 年龄 钱
张三 30  100
李四 40  400
国五 45  1000

给条件  @name='张三'
存储过程返回 张三 30 100

效果和 select * from 表 where 姓名='张三' 相同

上面的好像只返回一个记录数呀


create proc [存储过程名]
(@name varchar(20))
as
begin
 select * 
  from [表名]
  where 姓名=@name
end


怎么看怎么感觉就是这个。
[解决办法]

CREATE TABLE T_UserList(姓名 VARCHAR(20),年龄 INT,钱 NUMERIC(18,2))

INSERT INTO T_UserList
SELECT '张三',30,100
UNION
SELECT '李四',40,400
UNION
SELECT '国五',45,1000

/*存储过程*/
CREATE PROC SP_GetUserInfo
(
@USERNAMEVARCHAR(20),
@USERINFOVARCHAR(100) OUTPUT
)
AS
BEGIN
DECLARE @NAMEVARCHAR(20),
@AGEINT,
@MONEYNUMERIC(18,2)
SET @USERINFO = ''

SELECT @NAME = 姓名,@AGE = 年龄, @MONEY = 钱
      FROM T_UserList 
     WHERE 姓名 = @USERNAME

IF IsNull(@NAME,'') > ''
BEGIN
SET @USERINFO = @NAME + ',' + CONVERT(VARCHAR(20),@AGE) + ','+ CONVERT(VARCHAR(20),@MONEY)
END
END

/*执行语句*/
DECLARE @USERINFO VARCHAR(20)
EXEC SP_GetUserInfo '张三',@USERINFO OUTPUT
SELECT @USERINFO

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

姓名 年龄 钱
张三 30  100
李四 40  400
国五 45  1000

给条件  @name='张三'
存储过程返回 张三 30 100

效果和 select * from 表 where 姓名='张三' 相同

上面的好像只返回一个记录数呀


create proc [存储过程名]
(@name varchar(20))
as
begin
 select * 
  from [表名]
  where 姓名=@name
end



怎么看怎么感觉就是这个。

+1

LZ功能 貌似不足以用output param吧。
上面都是proc、output用法  学学这个以后会用到的....
[解决办法]
create procedure GetUser
(
 @UserName Varchar(64)
)
as
Select * From Class where Student = @UserName

[解决办法]
直接写上 select  ,不用特意写返回

热点排行