これは私を夢中にさせています。
デバッグしようとしている関数がありますが、テーブルに挿入したり、print ステートメントを実行したり、エラーを発生させることさえできません。
SQL はメッセージを返します
関数内での副作用演算子「PRINT」の使用は無効です。
これをデバッグするにはどうすればよいですか。実行中の変数の値を知りたいだけですか?
これは私を夢中にさせています。
デバッグしようとしている関数がありますが、テーブルに挿入したり、print ステートメントを実行したり、エラーを発生させることさえできません。
SQL はメッセージを返します
関数内での副作用演算子「PRINT」の使用は無効です。
これをデバッグするにはどうすればよいですか。実行中の変数の値を知りたいだけですか?
試す:
DECLARE @ExecuteString varchar(500)
,@Yourtext varchar(500)
@ExecuteString = 'echo '+@Yourtext+' > yourfile.txt)
exec master..xp_cmdshell @ExecuteString, no_output
使用: ">" を使用してファイルを作成/上書きし、">>" を使用してファイルを作成/追加します。文字REPLACE(@Yourtext,'&','^&')
をエスケープするために使用する必要があるかもしれません&
関数が文字列を返す場合、いつでも return を差し込むことができます。
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() を使用して、最初に文字列に安全に変換できます。
テーブル値関数で同様のことを行うことができます。出力したいデバッグ メッセージや変数を配置できる列を追加するだけです。