如何在存贮过程中,将一个表的某字段全部记录,依次保存在一个变量中,通过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 @[email protected]+rtrim(col) from T
go
declare @outChar varchar(1000)
set @outChar= ' '
exec pc @outChar output
select @outChar
------解决方案--------------------
declare @a varchar(100)
set @a= ' '
select @[email protected]+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 @[email protected]+CAST(字段名 AS nvarchar(20)) FROM 表名 WHERE ....
PRINT @Str
------解决方案--------------------
create proc a @b varchar(20),@a varchar(8000) output as
set @a= ' '
select @[email protected]+ @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