SqlServer简单的操作XML以及SQl的 try catch等统一格式

1:SqlServer简单的操作XML:

ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money]
    @Create_By VARCHAR(50),
    @xmlStr1 NVARCHAR(MAX)  -写在这里面的为 传入的参数
AS
BEGIN  as begin后面的为自定义的变量
    SET NOCOUNT ON;
    DECLARE @xml XML = @xmlStr1;

sqlserver操作XML

     T-SQL提供了以下几个针对XML类型的查询函数:
      query(XQuery):利用Xquery查询符合条件的元素集合。
      value(XQuery,Type):利用Xquery查询具体元素的值,Type定义值的类型。
      exist(XQuery):利用Xquery查询是否存在符合条件的元素。
      nodes(XQuery):利用Xquery获得一个结果集。

INSERT INTO qqtest(xmlinfo) xmlinfo 为字符串类型
VALUES(
N‘<root>
<person>
<id>F001</id>
<name>F001</name>
<age>18</age>
</person>
</root>‘
)

DECLARE @errorCode INT;
DECLARE @errorMsg VARCHAR(2000);
BEGIN TRY
    SET @errorCode = 0;
    SET @errorMsg = ‘‘;
    DECLARE @xml XML;
    SELECT @xml = xmlinfo
    FROM dbo.qqtest
    WHERE id =6;

    SELECT S.value(‘id[1]‘, ‘varchar(30)‘) id,
           S.value(‘name[1]‘, ‘varchar(30)‘) _Name,
           S.value(‘age[1]‘, ‘varchar(30)‘) age
    FROM @xml.nodes(‘/root/person‘) AS A(S); //B(S) 都是没有问题的   @xml.nodes(‘/root/person‘) AS A(S) 当做一张表来操作了
    SET @errorCode = 200;
END TRY
BEGIN CATCH
    SET @errorCode = 500;
    SET @errorMsg = ERROR_MESSAGE();
    RAISERROR(N‘error:XML文件格式错误:‘, 16, 1,@errorMsg);
    PRINT(@errorMsg)
END CATCH

获取XML数据  ,把XML数据当做一个表格 @xml.nodes(‘/Root/data‘) AS T(S);

select S.value(‘ID[1]‘,‘int‘)as ID, S.value(‘Name[1]‘,‘nvarchar(50)‘)as Name
 FROM @xml.nodes(‘/Root/data‘) AS T(S);

     2 写入临时表
        INSERT INTO #tbCRM_FranchiseeRecharge
        (
            [Recharge_ID],
            [Franchisee_ID],
            [Recharge_Credit],
            [Recharge_Amount]
        )
        SELECT DISTINCT
               NEWID(),
               S.value(‘Franchisee_ID[1]‘, ‘uniqueidentifier‘) AS Franchisee_ID,
               S.value(‘Recharge_Credit[1]‘, ‘int‘) AS Recharge_Credit,
               S.value(‘Recharge_Amount[1]‘, ‘money‘) AS Recharge_Amount
        FROM @xml.nodes(‘/Root/data‘) AS T(S);

2:SQl语句简单的 try catch 的统一格式:如下简单的Sql

  string sql = @"BEGIN
                                SET @insertStateCode = 0;
                                IF NOT EXISTS
                                (
                                    SELECT TOP 1
                                           *
                                    FROM tbCRM_Franchisee_Credit_History
                                    WHERE Seq [email protected]
                                )
                                BEGIN TRY
                                    BEGIN TRAN mytran;
                                    INSERT INTO tbCRM_Franchisee_Credit_History
                                    (
                                        [Seq],
                                        [Franchisee_ID],
                                        [Tran_Code],
                                        [Tran_By],
                                        [Tran_Date],
                                        [Credit],
                                        [Amount],
                                        [Remark]
                                    )
                                    SELECT RM.Recharge_ID,
                                           RM.Franchisee_ID,
                                           5,
                                           RM.Create_By,
                                           GETDATE(),
                                           RM.Recharge_Credit,
                                           RM.Recharge_Amount,
                                           RM.Remark
                                    FROM tbCRM_Franchisee_Recharge_Master RM
                                    WHERE RM.Recharge_ID = @rechangeID;
                                    UPDATE tbCRM_Franchisee_Recharge_Master
                                    SET Approve_By = 1
                                    WHERE Recharge_ID [email protected];
                                    SELECT @insertStateCode =200;
                                    COMMIT TRAN mytran;
                                END TRY
                                BEGIN CATCH
                                    SELECT @insertStateCode = 500;
                                    ROLLBACK TRAN mytran;
                                END CATCH;
                            END;";

其实就是简单如下:
BEGIN TRY
    BEGIN TRAN mytran; 
END TRY
BEGIN CATCH
    SELECT @insertStateCode = 500;
      ROLLBACK TRAN mytran;
END CATCH;

原文地址:https://www.cnblogs.com/Fengge518/p/11802598.html

时间: 2024-10-14 02:33:57

SqlServer简单的操作XML以及SQl的 try catch等统一格式的相关文章

关于SQLServer的一些简单代码操作

就不介绍了在studio中的图形化操作了,这里简单介绍了一些SQL语言的操作. 首先: 给一些例子怎样创建一个数据库对象和表(创建create  删除drop): 1.创建数据库对象 1 --创建数据库对象 2 create database School; 3 4 --删除数据库 5 drop database School 6 7 --创建数据库 的时候制定一些参数 8 9 create database School 10 on primary 11 ( 12 --数据库的逻辑名称 13

简单操作XML

第一部分 什么是XML? XML, Extensible Markup Language ,可扩展标记语言,主要用途是描述和交换数据.它的一个用处是配置文件,用来保存数据库连接字符串.端口.IP.日志保存路径等参数.我们可以使用文本文件来保存文件,使用 key = value, key2 = value2 ,...... 的方式来保存数据.这样做的坏处是结构比较不规矩,读取起来也不方便,需要自行编写一长串的if / else 语句.为了解决这些问题,我们可以使用XML. XML定义了一组规则,即

SQLServer简单介绍

SQLServer简单介绍 Sqlserver的版本分为: ①      企业版: 全面 ②      标准版: 适合中小企业的需求 ③      工作组版: 理想的数据管理解决方案,大小和用户数量没有限制的小型企业 ④      开发版: 覆盖企业版的所有功能,但是只允许开发和测试使用,不允许做为生产系统 ⑤      免费版: Sqlserver的使用: 连接数据库 a) 检查是否开启服务:  方法一:  Microsoft…à配置工具àsqlserver配置管理器à(左)sqlserver

Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务器所提供的SQL语句的巨大威力.与此同时,MyBaits消除了书写大量冗余代码的痛苦,它使使用SQL更容易. 在代码里直接嵌套SQL语句是很差的编码实践,并且维护起来困难.MyBaits使用了映射器配置文件或注解来配置SQL语句.在本章中,我们会看到具体怎样使用映射器配置文件来配置映射SQL语句.

黄聪:C#操作xml SelectNodes,SelectSingleNode通过 xPath 定位class包含Contains的DIV

一. SelectNodes,SelectSingleNode总是返回NULL 下面以一个简单的xml为例: <?xml version="1.0"?> <message xmlns="http://www.mydomain.com/MyDataFeed" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://www.mydomain.

XML学习笔记(2)--dom4j操作XML

1. 介绍(四种方式的比较这部分转载自:http://www.blogjava.net/xcp/archive/2010/02/12/312617.html) 1)DOM(JAXP Crimson解析器)         DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象

C#操作XML(三)

C#进入3.0时代,引入了强大的LINQ,同时提供了Linq to Xml,这个全新的Xml Api.与Inq to Xml相比,传统的DOM Api就显得笨重而繁杂了. 一.Linq to Xml的本质 首先,Linq to Xml是一种in-memory的技术,也就是说,如果用Linq to Xml去打开一个Xml,也就会占用相应的内存.所以和DOM一样,在极端的情况下,会出现内存不足. 其次,Linq to Xml从本质上来说,就是Linq to Object+一套Xml Api,与Lin

ado.net的简单数据库操作(一)

摘要:接下来的几篇博客将要讲到如何使用ado.net实现简单的数据库操作,包括增删改等内容.首先会介绍基础的数据库操作,然后以一个实例来进行讲解,这个实例会把一个数据表读取到winform上,然后在winform上有一些按钮和文本框,通过这些实现对数据库里的内容的增删改的操作.我个人比较菜,因此记录计较详细,说话也啰嗦,因此可能会写几篇才能介绍完. 本人属菜鸟一枚,刚接触.net两个星期,写的东西也是照搬自己看的视频里老师教的东西,其目的主要是为了巩固自己学习,当然,如果正好能帮助到和我一样的刚

SQL优化:一些简单的又实用的SQL优化方案【转】

面试过程中,面试官有极高的频率会问道数据库的优化,SQL语句的优化,网上关于SQL优化的教程很多,但是鱼目混杂,显得有些杂乱不堪.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 本文主要来自于互联网,进行内容的筛选优化再度整合而来,感觉好的话推荐给更多的人,让更多的人看到.纠正以及补充,鄙人文笔不好,也请大家多多海涵. 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where