2012-08-05 64 views
0

我想從我的表中生成此類輸出。其實我是想創建一個拿到表的名稱和它的列(也可以從sys.tables檢索) 和創造這樣的輸出作爲一個字符串的函數或過程: imagine [tablename]有3行:將列的名稱添加到我選擇的結果中

Tablename (code="1",column1="Column1value",column2="Column2value",column3="Column3value") 
Tablename (code="2",column1="Column1value",column2="Column2value",column3="Column3value") 
Tablename (code="3",column1="Column1value",column2="Column2value",column3="Column3value") 
+0

您使用的是哪個數據庫和版本? – 2012-08-05 10:53:53

+0

@MarkByers - 我認爲它是MS-SQL(T-SQL),因爲他指的是'systables' – Geoffrey 2012-08-05 10:58:53

+0

想要做這樣的事情似乎沒有任何錯誤。你有什麼樣的問題?你看,這個網站是關於問題和答案的。你的問題是什麼? – 2012-08-05 11:11:50

回答

0

我們可以從sys表中獲取傳入表名的列名,然後爲每一行打印表值,我們可以使用ROW_NUMBER並通過爲每行添加列值來獲得最終輸出來打印字符串。會有爲每個循環嵌套。外部foreach循環將使用ROW_NYMBER,並將針對表中的所有行執行,並且內部循環將根據需要在一個字符串中打印列值。

+0

謝謝。但你能給我的例子查詢 – Ehsan 2012-08-06 08:40:15

0

嘗試此過程以獲得所需格式的結果。

CREATE Procedure GetTableValues(@tblname varchar(10)) 
As 
BEGIN 
DECLARE @idmin int,@idmax int,@colCnt int,@i int 
DECLARE @outtbl TABLE(col1 varchar(1000)) 
DECLARE @tblval TABLE(col1 varchar(1000)) 
DECLARE @str varchar(1000),@colname varchar(100),@colvalue sql_variant 
SET @str='' 
SET @i=1 
select @colCnt=COUNT(*) from sys.columns where object_id=object_id(@tblname) 

IF EXISTS(select * from sys.tables where name='temp') 
DROP TABLE temp 
EXEC('select ROW_NUMBER() over (order by (select 0)) as rno,* into temp from '[email protected]) 

select @idmin=MIN(rno),@idmax=MAX(rno) from temp 

while(@idmin <[email protected]) 
begin 
while(@i <[email protected]) 
begin 
select @colname=name from sys.columns where [email protected] and object_id=object_id(@tblname) 
insert into @tblval 
exec('select '[email protected]+' from temp where rno='[email protected]) 
select @colvalue=col1 from @tblval 
SET @[email protected]+','[email protected]+'="'+cast(@colvalue as varchar)+'"' 
SET @[email protected]+1 
end 
insert into @outtbl 
select @tblname+'('+STUFF(@str,1,1,'')+')' 
SET @[email protected]+1 
SET @i=1 
SET @str='' 
end 
select * from @outtbl 
END 


exec GetTableValues 'test7' 
+0

沒有多數民衆贊成在答案我需要一個循環內部表'test2'的記錄,爲每一行創建sunch字符串:'(code =「1」,column1 =「Column1value 」,列2 = 「Column2value」,欄3 = 「Column3value」)」 – Ehsan 2012-08-06 09:59:23

相關問題