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
上一篇: Centos7下安装Nginx
下一篇: 004.etcd集群部署-动态发现