标签归档:存储过程

mssql sqlserver存储过程中如何使用USE关键字呢?


摘要:
下文讲述一种在存储过程中,执行同服务器中不同数据库的脚本的方法分享,如下所示:

USE 关键字功能:
USE 关键字用于切换当前脚本运行的数据库,切换上下文。
那么如何在存储过程中使用USE 关键字,实现存储过程中 跨数据库执行脚本呢?
例:
存储过程中使用USE 关键字

存储过程中,使用USE关键字的方法
 exec(‘use databasename; update tableName set … where keyId …’)
———————————————————
–当使用Exec(use )语句后,
–use只在当前exec语句结束前有效,所以必须将相关语句放入exec中一起运行。
———————————————————

       create proc  pr_test
       as 
	   begin
           exec('use databasename; update tableName set ... where keyId ...') 
       end
	   go 
	 
	 exec pr_test  
	 go
  

相关阅读:
mssql sqlserver sql脚本中 use与go关键字的用法简介

mssql sqlserver 使用存储过程名称获取存储过程内容的四种方法分享


摘要:
下文讲述在sqlserver数据库中使用sql脚本获取存储过程内容的三种方法分享,如下所示:
实验环境:sql server 2008 R2

例:
定义一个存储过程pr_test

       create proc pr_test
        @a varchar(10)
	as 
	begin
           print '存储过程内容'
	end
	go
    

例:获取存储过程pr_test的内容

获取存储过程内容方法1:

  declare @proc_info nvarchar(max)
  
SELECT @proc_info= text 
FROM syscomments 
WHERE id = ( SELECT id FROM sysobjects WHERE name = 'pr_test')

print @proc_info 
 


获取存储过程内容方法2:

 declare @proc_info nvarchar(max)
SELECT @proc_info= definition FROM sys.sql_modules 
JOIN sys.objects ON sys.sql_modules.object_id=sys.objects.object_id and type='P' 
and sys.objects.name='pr_test' 

print @proc_info


获取存储过程内容方法3:

  exec sp_helptext 'pr_test'


获取存储过程内容方法4:

 select object_definition(object_id('pr_test'))
mssql_sqlserver_获取存储过程内容的三种方法

mssql_sqlserver_获取存储过程内容的三种方法

mssql sqlserver 存储过程返回数据的三种方法分享


摘要:
我们深知”存储过程”是一个sql代码块集合,里面包含大量的逻辑,存储过程常用于事务操作,数据查询等数据操作,下文将讲述如何获取存储过程的返回值呢?如下所示;
实验环境:sql server 2008 R2


存储过程返回数据三种方法说明

1.output输出参数的方式
此值是将结果放入参数中,然后output
2.return返回值的方式
此返回值只可返回一个整数
3.select输出结果集合的方式
此方式是采用select返回table的方式返回结果集给用户
———-存储过程三种返回值方式优缺点——-
select 可返回大量数据及多个集合,但会消耗大量的服务器资源
RETURN 返回数据非常有限就一个整型,只用于一些特殊状态值返回
OUTPUT 可返回多个数据,对服务器资源占用不大,非查询类业务建议使用此方式

存储过程返回数据举例说明

   if exists (select null from 
  sysobjects where xtype='p'
  and name ='pr_maomaoTest'
)
begin
  drop proc pr_maomaoTest 
end
go

create proc pr_maomaoTest
  @keyId int,
  @infoA varchar(20) output,
  @infoB varchar(20) output
as
begin
   ---select返回结果
   select @keyId as 'A'

   ---对output设置返回值
   set @infoA ='sqlServer'
   set @infoB ='maomao365.com'

   ---使用return 设置返回值
   return 8

end
go

---应用测试
declare @return int 
declare @A varchar(20)
declare @b varchar(20)


declare @keyId int 
set @keyId =8989

exec @return = 
  pr_maomaoTest
   @keyId = @keyId,@infoA= @A output,@infoB = @B output 

---返回值测试
print '---return'
print @return
print '---outPut'
print @A 
print @B 
mssql_sqlserver_存储过程返回值的三种方法分享

mssql_sqlserver_存储过程返回值的三种方法分享