Просто удалите 0, и вместо этого добавится пробел:
>>> print "'%6d'"%4
Получение всего содержимого запроса для печати в окне сообщений, вероятно, было бы больше проблем, чем это стоит. Вместо этого я бы порекомендовал отладить процедуру из окна запроса. Что вы можете сделать, так это добавить в процедуру необязательный параметр со значением по умолчанию NULL. Ваше приложение не будет передавать его, поэтому вы можете использовать это в своих интересах. Пример:
Alter Procedure Foo(@Col1 int, @col2 varchar(20), @Debug Bit = NULL)
As
SET NOCOUNT ON
If @Debug = 1
Begin
Select * From SomeTable Where Col1 = @Col1
End
-- The rest of your code here
Тогда,
Вы можете заполнить временную таблицу или табличную переменную из проблемной хранимой процедуры, а затем выбрать из этих таблиц после вызова хранимой процедуры. Обязательно удалите и воссоздайте все временные таблицы в sp.
CREATE TABLE ##t1 (x int)
GO
CREATE PROCEDURE Foo AS
BEGIN
TRUNCATE TABLE ##t1
INSERT INTO ##t1 SELECT column FROM table;
END
GO
exec Foo;
select x from ##t1;
Установите параметр «Результаты в текст», и ваши вкладки «Результаты» и «Сообщения» будут объединены в одну вкладку, объединяющую операторы PRINT и SELECT.
Чтобы установить для результатов значение «Текст», выполните одно из следующих действий:
Должен ли он быть на панели сообщений? Я всегда считаю удобным просто запустить запрос выбора, который выводит результаты в панель результатов, а фактический вывод - в другом наборе результатов. Иногда я включаю столбец «идентификатор», который помогает идентифицировать результаты. Например:
select 'checkpoint1',a,b,c from table1
....
select 'table @a', * from @a
....
<actual query here>
Когда хранимая процедура готова к работе, просто удалите эти операторы каркаса