日期:2014-05-19  浏览次数:20500 次

如何在存贮过程中,将一个表的某字段全部记录,依次保存在一个变量中,通过output参数返回?
如何在存贮过程中,将一个表的某字段全部记录,依次保存在一个变量中,通过output参数返回?
-----------------------
我在写一个校验程序的存贮过程,在校验时得到一个表,我不想将这个表传到客户端,只想通过output参数将这个表的某字段信息传回来,如何做?
比如得到这样一个表:
字段名是班组号,值如下
12
45
23
78
共有4条记录,我想把这四个值拼到一个字符串中,使字符串成为:
12452378,然后通过output参数返回这个字符串。
关键是如何将表的值放到字符串中,先谢了。



------解决方案--------------------
create table T(col int)
insert T select 12
insert T select 45
insert T select 23
insert T select 78
go

create proc pc
@outChar varchar(1000) output
as

select @outChar=@outChar+rtrim(col) from T
go


declare @outChar varchar(1000)
set @outChar= ' '
exec pc @outChar output
select @outChar
------解决方案--------------------
declare @a varchar(100)
set @a= ' '
select @a=@a+ltrim([班组号]) from [这样一个表]
select @a
------解决方案--------------------

--建立測試環境
Create Table TEST
(班组号 Int)
--插入數據
Insert TEST Select 12
Union All Select 45
Union All Select 23
Union All Select 78
GO
--建立存儲過程
Create Procedure SP_TEST(@S Varchar(1000) Output)
As
Begin
Select @S = ' '
Select @S = @S + Rtrim(班组号) From TEST
End
GO
--測試
Declare @S Varchar(1000)
EXEC SP_TEST @S Output
Select @S
GO
--刪除測試環境
Drop Table TEST
Drop Procedure SP_TEST
GO
--結果
/*
12452378
*/

------解决方案--------------------
如何将表的值放到字符串

try:
DECLARE @Str nvarchar(100)
SET @Str= ' '
SELECT @Str=@Str+CAST(字段名 AS nvarchar(20)) FROM 表名 WHERE ....
PRINT @Str

------解决方案--------------------
create proc a @b varchar(20),@a varchar(8000) output as
set @a= ' '
select @a=@a+ @b from 表
go

declare @c varchar(8000)
exec a 字段,@c output
select @c
------解决方案--------------------
create database mytest
go

use mytest
create table YourTableName
(
ClassGroupID int
)

insert YourTableName
select 14
union all select 25
union all select 23
union all select 78

select * from YourTableName


alter procedure getFormatData @outputParam varchar(8000) output
as
begin
set @outputParam = ' '
select @outputParam = @outputParam + convert(varchar(200),ClassGroupID) from YourTableName
end

--
declare @result varchar(8000)
exec getFormatData @result output
print @result