这真让我抓狂。
我有一个正在尝试调试的函数,但我无法插入表、执行打印语句,甚至无法从中引发错误。
SQL 返回消息
在函数中无效使用具有副作用的运算符“PRINT”。
我该如何调试这个,我只想知道一个变量在运行时的值?
这真让我抓狂。
我有一个正在尝试调试的函数,但我无法插入表、执行打印语句,甚至无法从中引发错误。
SQL 返回消息
在函数中无效使用具有副作用的运算符“PRINT”。
我该如何调试这个,我只想知道一个变量在运行时的值?
尝试:
DECLARE @ExecuteString varchar(500)
,@Yourtext varchar(500)
@ExecuteString = 'echo '+@Yourtext+' > yourfile.txt)
exec master..xp_cmdshell @ExecuteString, no_output
使用:“>”创建/覆盖文件,“>>”创建/附加到文件。你可能需要用来REPLACE(@Yourtext,'&','^&')
转义&
字符
如果你的函数返回一个字符串,你总是可以插入一个返回,例如
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() 将其安全地转换为字符串。
您可以使用表值函数执行类似的操作,只需添加一列,您可以在其中放置要输出的任何调试消息或变量。