当前位置: 澳门新濠3559 > 数据库 > 正文

下文讲述采用sql脚本批量删除所有存储过程的方

时间:2019-09-05 22:45来源:数据库
转自:  转自: 转自:http://www.maomao365.com/?p=6864 摘自: 摘要: 下文汇报sql脚本中过滤百分号的秘技: 实验遭遇:sql server 2009 Odyssey2  摘要: 摘要: 下文介绍sql server中,sql脚本制止出现除零荒谬的

转自: 

转自:

转自:http://www.maomao365.com/?p=6864

摘自:

摘要:
下文汇报sql脚本中过滤百分号的秘技:
实验遭遇:sql server 2009 Odyssey2 


摘要:

摘要:
下文介绍sql server中,sql脚本制止出现除零荒谬的法子共享


下文汇报选择sql脚本批量去除全数存储进程的秘籍,如下所示:
试验情形:sqlserver 二〇〇九 奥迪Q52


百分号:在sql脚本编写中“百分号”被界定为一种通配符,那么只要我们需寻觅数据中是否存在百分号时,需采取何种情势吧?
下文通超过实际例的章程分析百分号的特别格局。  

摘要:


在各样业务种类开采中,平日会碰着除零的不当,下文分享了二种管理格局:
方法1: case when end 

1        ---在sql server中,如果需要检索百分号是否存在数据中,我们使用以下方法:
2       ---方法1:中括号括起百分号进行过滤操作
3            select * from tableName where [列名]  like '%[%]%'  ---采用中括号括起百分号
4       ---方法2.1:  采用escape指定匹配条件中转义字符为~,对百分号进行转义查询
5        select *,'1.2' as [例2] from tableName where [列名]  like '%~%%'   escape '~' 
6         ---2.2采用escape指定匹配条件中转义字符为t,对百分号进行转义查询
7        select *,'1.3' as [例3] from tableName where [列名]  like '%t%%'   escape 't'
8  

下文将享用应用sql脚本输出excel的点子
 
此脚本能够使用于 表或视图生成excel的章程,
若需使用sql脚本输出excel数据,大家可将sql脚本生成视图或不常表,

平常使用sql脚本,删除存储进度,我们只能应用删除命令一条一条的删除存款和储蓄进程,下文介绍一种便利方法,能够对系统中负有的存款和储蓄进度进展删减,
<span style="color:red;">
兑现思路:
1 选拔有的时候表将储存进度名称缓存
2 通过轮回不时表,输出删除存款和储蓄进度脚本
3 实践脚本

declare @a int ---分子
declare @b int ---分母
select  case  when @b=0 then NULL else @a/@b end  as [a除以b]

 

然后再输出excel

输出excel语法简要介绍:
exec
master..xp_cmdshell 'bcp [数据库名称].[架构名].[表名] out [excel存放地方全路径] -c -q -S"服务器Ip" -U "sql用户名" -P "sql密码"'

---例1:
exec 
master..xp_cmdshell 'bcp test.dbo.tableName out d:test.xls -c -q -S"." -U "sa" -P "erp"'
---将数据库test中tablName输出值d盘test.xls文件
---服务器地址.
---sql账户sa
---sql密码erp
--------------------------------------------
例2: 根据动态文件名输出excel的方法
declare @name varchar(30) ---动态文件名
set @name ='d:test123.xlsx'

exec 
('master..xp_cmdshell ''bcp test.dbo.tableName out ' @name ' -c -q -S"." -U "sa" -P "erp"''') ---拼接操作语句,并采用exec执行

注意事项:

*1 使用脚本输出的excel ,无表头
2 可动态文件名和动态sa账户密码生成相关音信
3 假诺出口sql脚本的多少至excel,我们需先将sql脚本生成的多寡缓存至表中,然后输出表数据至excel

xp_cmdshell相关权限需展开
*

declare @t table(keyId int identity(1,1),tableName varchar(256))
----生成临时表
insert into @t(tableName) 
select [name] from sysobjects where type='P'

declare @i int @iMax int ,@info varchar(256)
set @i =1 
select @imax=max(keyId) from @t as t

while @i <@imax
begin
select @info = t.tableName from @t as t where t.keyId =@i

if @info is not null 
begin
exec ('drop proc ' @info) ---遍历删除存储过程
end 

set @i = @i 1 
set @info =null 
end

 

方法2:nullif
nullif(表达式A,表达式B)
—-借使表达式A不对等表明式B,则赶回表明式A
—-反之重回NULL 

 

declare @a int ---分子
declare @b int ---分母
select @a/nullif(@b,0) as [a除以b]

 

编辑:数据库 本文来源:下文讲述采用sql脚本批量删除所有存储过程的方

关键词: 澳门新濠3559