4

可能重复:
TSQL 如何在用户定义的函数中输出 PRINT?

这真让我抓狂。

我有一个正在尝试调试的函数,但我无法插入表、执行打印语句,甚至无法从中引发错误。

SQL 返回消息

在函数中无效使用具有副作用的运算符“PRINT”。

我该如何调试这个,我只想知道一个变量在运行时的值?

4

2 回答 2

4

尝试:

DECLARE @ExecuteString   varchar(500)
       ,@Yourtext        varchar(500)

@ExecuteString = 'echo  '+@Yourtext+' > yourfile.txt)

exec master..xp_cmdshell @ExecuteString, no_output

使用:“>”创建/覆盖文件,“>>”创建/附加到文件。你可能需要用来REPLACE(@Yourtext,'&','^&')转义&字符

于 2012-05-23T14:23:50.337 回答
3

如果你的函数返回一个字符串,你总是可以插入一个返回,例如

ALTER FUNCTION dbo.whatever()
RETURNS NVARCHAR(128)
AS
BEGIN
  DECLARE @foo VARCHAR(128);

  SELECT TOP (1) @foo = name FROM sys.objects ORDER BY NEWID();

  -- temporary debug:
  RETURN (@foo);

  ... continue with function
END
GO

如果变量是数字或日期,您可以先使用 RTRIM() 或 CONVERT() 将其安全地转换为字符串。

您可以使用表值函数执行类似的操作,只需添加一列,您可以在其中放置要输出的任何调试消息或变量。

于 2012-05-23T14:20:59.657 回答