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