0

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

请帮忙!!

4

2 回答 2

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;
于 2012-08-20T19:57:26.317 回答
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 注入。

于 2012-08-20T19:56:47.767 回答