显示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
“选择”+@[User::srcFile]+“作为文件名”
FileName
分配给User::srcFile
谢谢大家的帮助 那么,如果我想要结果集中的行id怎么办?@Eli您可以发布一个完整的问题,并附上您的所有要求吗?对整天玩hunt和peck不感兴趣。如果没有嵌套和动态SQL,您将无法在T-SQL中计算T-SQL表达式,抱歉。