设为首页 加入收藏

TOP

sqlserver存储过程分析
2018-05-08 06:06:59 】 浏览:76
Tags: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  


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SQL学习总结之SQL的分类介绍 下一篇数据库SQL优化教程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目