标签归档:存储过程

mssql sqlserver 调试存储过程的方法分享


摘要:
下文讲述sqlserver中使用print调试存储过程的方法分享


对于超长的存储过程,我们可以在存储过程指定位置放入
print 打印变量信息,输出指定变量的值,
通过print 打印出的值判断出此处的执行是否合理及脚本出错的位置,方便对存储过程进行调试,如下所示:

   例:调试存储过程pr_test
   ---1.建立测试存储过程
   create proc pr_test 
   as 
   begin
     declare @a int 
    set @a = 1 
     print '行号1:'
     print 'a:'+convert(varchar(20),@a )
    set @a = 2/0 
     print '行号2:'
     print 'a:'+convert(varchar(20),@a )
     end 

  ---2 运行存储过程,打印相关变量观察输出数值是否合理
   exec pr_test 
    ---通过运行以上存储过程,我们可以观察出:
     2.1 存储过程运行报错
     2.2 存储过程运行中,在消息窗中,输出 
       行号1:
       a:1
      然后报相关错误信息:
    从以上返回信息 ,我们可以看出sql脚本在第二个print输出后,运行报错,从以上错误信息我们可以快速查找出sql脚本出错的位置,然后进行相关的修改和调整达到调试sql存储过程的目的
  

mssql 存储过程调用另一个存储过程中的结果的方法分享


摘要:
下文将分享”一个存储过程”中如何调用”另一个存储过程的返回结果”,并应用到自身的运算中


在实际开发中,我们经常会遇到在一个存储过程中调用另一个存储过程的返回结果(存储过程相互应用),

实现思路:主要采用临时表将存储过程返回的结果集进行存储,然后供另一个存储过程应用。

如下所示:

create proc pr_b  
  @a int,@b int
as
begin
 select @a as a @b as b 
 union all 
 select @a+1 as a @b+1 as b 
end
go

-----创建存储过程pr_a,并调用存储过程pr_b的返回结果
create proc pr_a  
as
begin
  create table #t (a int,b int) 
  insert into #t (a,b)
  exec pr_b 120,188
   
  select * from #t 

  truncate table  #t
  drop       table  #t
end
go

mssql sqlserver中函数和存储过程的区别简介


摘要:
下文主要讲述存储过程和函数的区别


函数和存储过程的不同点:
1:存储过程可以在SSMS上直接点击右键,输入参数,然后点击执行,进行调用运行
函数不可以这样操作,函数只可以采用脚本的方式直接调用

	  select dbo.[函数名](参数名)
	 

2:函数只能返回数据(参数和表)
存储过程,既可以返回数据,也可以输出多个表信息,还可以获取输出消息
3:查询语句中,可以使用函数作为对象输出,存储不可以进行此类操作
4:存储过程执行时,会被缓存执行计划
函数执行后,不会被缓存
5:通常我们把复杂的功能放入存储过程,而把简单的处理转换功能放入函数中