运行存储在表中的SQL预定义函数

时间:2012-08-20 19:52:27

标签: sql sql-server sql-server-2008

我有一个存储SQL预定义函数的表,如行/列中的CONVERT(VARCHAR(10), '2012-08-21 00:16:41.993', 101)。在从表中检索结果时,它应该运行该函数并将最终结果作为“2012-08-21”,而现在它返回相同的函数语句。我正在运行select (select RunDate from RunDate)并使用SQL Server数据库。

请帮助!!

2 个答案:

答案 0 :(得分:5)

您需要为此使用动态SQL。你不能只嵌套表达式并让SQL评估输出...

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

INSERT @x(sql) SELECT N'CONVERT(VARCHAR(10), ''2012-08-21 00:16:41.993'', 101)';

DECLARE @sql NVARCHAR(MAX);

SELECT @sql = N'SELECT ' + sql FROM @x;

EXEC sp_executesql @sql;

答案 1 :(得分:1)

看起来像这样(相应地调整):

DECLARE @predef VARCHAR(1000);
DECLARE @sqlquery VARCHAR(1000);
SELECT  @predef = (SELECT top 1 Value FROM Parameters Where Name = 'MYFUNC');

SET @sqlquery = 'select ' + @predef + ' from SomeTable';
EXECUTE ( @sqlquery );

一个提示:这里是龙。小心SQL注入。