2

有时我们需要使用客户端数据进行调试,而我们没有时间进行完整的数据库备份,因此我们手动将 sql 结果转换为静态“select UNION select UNION”的组合,以便我们可以即时使用他们的数据......

例子:

select * from items

结果:

Itemcode     ItemName     Price
Car1         FerrariX     1200.00
Car2         FerrariZ     3000.00
Car3         MustangR     2100.00

我们将它带回我们的调试环境,如下所示:

select 'Car1' as Itemcode, 'FerrariX' as Itemname, 1200.00 as 'Price' UNION
select 'Car2',             'FerrariZ', 3000.00 UNION
select 'Car3',             'MustangR', 2100.00

可能的存储过程解决方案:

EXEC spQueryAsStaticData @Query = 'select * from items'

我们如何自动进行这种转换?一些存储过程?

4

2 回答 2

0

我用这样的东西使用数据打印出文本

DECLARE @i int
DECLARE @employee_id int
Declare @Hash nvarchar(max)
declare @Result nvarchar(max)
Declare @String nvarchar(MAX)
DECLARE @numrows int
DECLARE @employee_table TABLE (
    idx smallint Primary Key IDENTITY(1,1)
    , [ID] int , [Hash] nvarchar(50), Result nvarchar(50)
)


INSERT @employee_table
SELECT Top 5 * FROM [Hlist].[dbo].[MD5]
set @i =0 
set @String = '' 


SET @numrows = (SELECT COUNT(*) FROM @employee_table)

IF @numrows > 0

    WHILE (@i <= (SELECT MAX(idx) FROM @employee_table))
    BEGIN


        -- get the next employee primary key
        SET @employee_id = (SELECT ID  FROM @employee_table WHERE idx = @i)
        SET @Hash = (SELECT Hash  FROM @employee_table WHERE idx = @i)
        SET @Result = (SELECT Result  FROM @employee_table WHERE idx = @i)
        Set @String = coalesce(@String +'Select '+ convert(varchar,@employee_id) + ', ' +@Hash+ ', '+@Result +' Union ', '')

        --
        -- do something with this employee
        --


        -- increment counter for next employee
        SET @i = @i + 1
    END


    Print @String
于 2013-01-29T10:53:55.567 回答
0

最后,我们开发了一个小 C# 应用程序解决了它,虽然不如直接从 SQL 查询生成它有用,但它可以工作......

如果有人给出 SQL 解决方案,我们会将答案授予他/她

于 2013-01-31T08:41:11.270 回答