我有一个存储 SQL 预定义函数的表,例如CONVERT(VARCHAR(10), '2012-08-21 00:16:41.993', 101)
在行/列中。从表中检索结果时,它应该运行函数并将最终结果作为“2012-08-21”给出,而不是现在它返回相同的函数语句。我正在运行select (select RunDate from RunDate)
并使用 SQL Server 数据库。
请帮忙!!
我有一个存储 SQL 预定义函数的表,例如CONVERT(VARCHAR(10), '2012-08-21 00:16:41.993', 101)
在行/列中。从表中检索结果时,它应该运行函数并将最终结果作为“2012-08-21”给出,而不是现在它返回相同的函数语句。我正在运行select (select RunDate from RunDate)
并使用 SQL Server 数据库。
请帮忙!!
为此,您需要使用动态 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;
它看起来像这样(相应调整):
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 注入。