的下面存儲程序做w ^帽子你需要
CREATE PROCEDURE [dbo].[Rotat]
-- Add the parameters for the stored procedure here
@Where nvarchar(max),
@tableName nvarchar(max)
AS
BEGIN
Declare @SqlQuery nvarchar(max),@ColumnName nvarchar(255)
DECLARE @TempTable TABLE
(
ID int IDENTITY(1,1) ,
ColumnName nvarchar(255),
ColumnValue ntext
)
INSERT INTO @TempTable (ColumnName)
SELECT column_name
FROM information_schema.columns
WHERE table_name = @tableName
Declare @index int
Set @index = 1;
Declare @Count int
Select @Count = Count(ID) from @TempTable
declare @columnValue nvarchar(255)
declare @paraDef nvarchar(max)
declare @string nvarchar(max)
WHILE @index <= @Count
BEGIN
Select @ColumnName = ColumnName from @TempTable where id = @index
set @string ='select @ret= cast('+ @ColumnName + ' AS nvarchar(255))
from '[email protected]+' WHERE ' + @Where
set @paraDef=N'@ret nvarchar(255) output'
EXECUTE sp_executesql @string, @paraDef,@[email protected] output
UPDATE @TempTable
SET ColumnValue = @columnValue
WHERE ID [email protected]
Set @index = @index + 1
END
Select * from @TempTable
END
只是把它的通表的名稱和你的條件,如果你只想查看調換數據的非常快的技術,將返回一行例如
EXEC [dbo].[Rotat]
@Where = 'UserID = 123456',
@tableName = 'Users'
我試圖得到我想要的東西,但它是最好的解決辦法? – Hotmoil 2010-09-28 05:20:41