sqlserver存储过程分析

创建变量,一个存储过程只能创建一个相同名字的变量

declare @[name]  [type]

规则:name必须英文开头   type (xml varchar int  datetime 等)

例:declare @itemmessage xml

赋值 set @itemmessage = ‘<main><dd name=”na”>1</dd><ff>2</ff><dd name=”bu”>3</dd></main>’

if … else     begin …  end   用法

对象是xml时候可以使用,

.modify(‘insert <ordrowid>00</ordrowid> as   first into  (/main)[1]’)  //注意里面必须是字符串,

[sql] view plain copy

@itemmessage.modify(‘insert <ordrowid>00</ordrowid> as   first into  (/main)[1]’) //在main下追加ordrowid节点  

set @itemmessage.modify(‘replace value of (/main/ordrowid/text())[1] with sql:variable(“@userid”)’) // 替换main/ordrrowid 的值  

在打印xml对象只能用select 不能 print

获取xml的值

— 方法1 (只有唯一一个key的时候) 

[sql] view plain copy

select @itemmessage.value(‘data(/main/ss/text())[1]’, ‘varchar(30)’)   

select @itemmessage.value(‘data(/main/ss[@name=”bu”])[1]’, ‘varchar(30)’)    

— 方法2  

select @itemmessage.value(‘(/main/ss/text())[1]’,, ‘varchar(30)’)  原理同上

–方法3 获取所有值但一个表格上

[sql] view plain copy

select   c.value(‘.’,’varchar(30)’)  from @itemmessage.nodes(‘/main/dd/text()’) t(c)   

select  c.value(‘text()[1]’,’varchar(30)’)  from @itemmessage.nodes(‘/main/dd’) t(c)    

判断是否存在,if @itemmessage.exist(‘main/dd’) = 1 存在返回true,否则false

upper([string]),把英文全部变大写的函数

newid() 新唯一 的id

getdate()当前时间

convert(varchar(12),getdate(),111) —–2018/04/02

isnull()是否空值

[sql] view plain copy

执行动态拼凑的sql , exec sp_executesql @dd //***注意@dd必须是@dd nvarchar  

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐