【问题标题】:Printing variables and messages in T-Sql in SQL Server在 SQL Server 的 T-Sql 中打印变量和消息
【发布时间】:2015-02-13 14:41:51
【问题描述】:
我有以下代码
create procedure math_table1(@num int, @i int)
as
begin
declare @b int
set @b = 1
while (@b <= @i)
begin
print @num
print '*'
print @b
print '='
print @num * @b;
set @b = @b + 1;
end
end
对于输入5, 10,我得到以下类型的输出:
5
*
1
=
5
我想修改我的代码以获得以下类型的输出:
5*1=5
谁能帮帮我?
【问题讨论】:
标签:
sql-server
database
tsql
【解决方案1】:
不要使用不同的print 语句,而是使用一个print 语句并附加symbols。试试这个。
ALTER PROCEDURE Math_table1 (@num INT,
@i INT)
AS
BEGIN
DECLARE @b INT
SET @b=1
WHILE( @b <= @i )
BEGIN
PRINT CONVERT(VARCHAR(10), @num) + '*'
+ CONVERT(VARCHAR(10), @b) + '='
+ CONVERT(VARCHAR(10), @num*@b);
SET @b=@b + 1;
END
END
EXEC Math_table1 5,10
结果
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45
5*10=50
【解决方案2】:
create procedure math_table1 (@num int, @i int)
as
begin
declare @r int, @b int = 1;
while (@b <= @i)
begin
set @r = @num * @b;
raiserror ('%d * %d = %d', 0, 1, @num, @b, @r) with nowait;
set @b = @b + 1;
end
end
PRINT vs RAISERROR
...或使用您自己的“格式化”功能,如this one
print dbo.Format3('{0} * {1} = {2}', 2, 3, 6);