显示SQL Server 2012表中存储的动态SQL的结果

显示SQL Server 2012表中存储的动态SQL的结果,sql,sql-server,tsql,ssis,dynamic-sql,Sql,Sql Server,Tsql,Ssis,Dynamic Sql,我有一个表,它被应用程序用来设置一些变量。 但是,它所做的一件事是创建文件,文件名和目录保存在表中。 但是我希望文件名是一个类似于CONVERT(VARCHAR(10),GETDATE(),20)+'.txt'的表达式,因此我希望将其作为SQL表达式保存在表中,然后对其求值以从中获取值2012-03-27.txt 有人知道怎么做吗 动态SQL SP可能会工作,但会非常复杂,还有其他方法吗 添加 计算列不起作用,因为我希望每行上有不同的表达式 如果有这样一件事,我可以有一个计算列,我可以在每一行输

我有一个表,它被应用程序用来设置一些变量。 但是,它所做的一件事是创建文件,文件名和目录保存在表中。 但是我希望文件名是一个类似于
CONVERT(VARCHAR(10),GETDATE(),20)+'.txt'
的表达式,因此我希望将其作为SQL表达式保存在表中,然后对其求值以从中获取值
2012-03-27.txt

有人知道怎么做吗

动态SQL SP可能会工作,但会非常复杂,还有其他方法吗

添加

计算列不起作用,因为我希望每行上有不同的表达式


如果有这样一件事,我可以有一个计算列,我可以在每一行输入不同的值将是可怕的

只需将其作为表定义中的计算列放入,该列的表达式与您提供的代码完全相同,您应该已经设置好了

好吧,不太可能有难以置信的效率,但有一种方法:

DECLARE @x TABLE(sql NVARCHAR(2000));

INSERT @x(sql) VALUES
  ('CONVERT(VARCHAR(10),GETDATE(),20) + ''.txt'''),
  ('CONVERT(CHAR(8), GETDATE(), 112) + ''.sql''');


DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += ' UNION ALL SELECT ' + sql FROM @x;

SET @sql = STUFF(@sql, 1, 11, '');

EXEC sp_executesql @sql;
结果:

2013-02-27.txt
20130227.sql
解决了的! 在我的例子中,“应用程序”是一个SSIS包,所以我所做的非常简单

  • 我将表中的值抓取到变量
    @User::srcFile
  • 我执行一个执行SQL任务,将SQL语句表达式设置为
    “选择”+@[User::srcFile]+“作为文件名”
  • 在结果集部分,我将
    FileName
    分配给
    User::srcFile

  • 谢谢大家的帮助

    那么,如果我想要结果集中的行id怎么办?@Eli您可以发布一个完整的问题,并附上您的所有要求吗?对整天玩hunt和peck不感兴趣。如果没有嵌套和动态SQL,您将无法在T-SQL中计算T-SQL表达式,抱歉。