-1

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

有谁知道该怎么做?

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

添加

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

如果有这样的事情,我可以有一个计算列,我可以在每行中输入不同的值,那就太棒了!

4

3 回答 3

0

只需将其作为计算列放入表定义中,该列的表达式与您提供的代码完全相同,您应该一切就绪!

于 2013-02-27T19:41:03.767 回答
0

好吧,不太可能非常有效,但这是一种方法:

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
于 2013-02-27T19:53:58.937 回答
0

解决了!

在我的特殊情况下,“应用程序”是一个 SSIS 包,所以我所做的非常简单,

  1. 我将表中的值抓取到变量中@User::srcFile
  2. 我做了一个执行 SQL 任务,将 sql 语句表达式设置为"SELECT " + @[User::srcFile] + " AS FileName"
  3. 在结果集部分,我分配FileNameUser::srcFile

感谢大家的帮助!

于 2013-02-28T15:06:51.890 回答