zoukankan      html  css  js  c++  java
  • SQL 实践优化 SUM NULL EXISTS TRANSACTION

    SQL 实践优化

    2015年8月21日

    8:43

     

    (一)SUM 忽略NULL,返回NULL

    @AA = SUM(ISNULL(A,0)) 在取不到值得时候就会返回NULL

    @BB = ISNULL(SUM(B),0) 这样就算取不到值也会有返回值不会为NULL

    (二)NULL字符串拼接

    --校验客户是否存在,返回所有不存在的客户编号:        

      SET @sConsigneeID = NULL

      SELECT @sConsigneeID = ISNULL(@sConsigneeID + ',', '') + ConsigneeID

      FROM (

        SELECT DISTINCT a.ConsigneeID AS ConsigneeID

        FROM @tblAllData a

          LEFT JOIN BAS_Customer co ON a.ConsigneeID = co.CustomerID AND co.Customer_Type = 'CO'

        WHERE

          co.CustomerID IS NULL ) a

      IF @sConsigneeID <> ''

        SET @Msg = @Msg + '客户档案不存在:' + @sConsigneeID

    (三)EXISTS

    一般都使用EXIST去代替Count这样会有更高的执行效率

    (四)TRANSACTION
    SET @iTranCount = @@TRANCOUNT

    BEGIN TRY 

    IF @iTranCount = 0

    BEGIN TRANSACTION

     

    IF @iTranCount = 0

    BEGIN

    IF XACT_STATE() = 1

    COMMIT TRANSACTION

    ELSE

    RAISERROR ('事务提交失败!', 16, 0)

    END

       

    RETURN 0

    END TRY

    BEGIN CATCH

    IF @iTranCount = 0 AND XACT_STATE() <> 0

    ROLLBACK TRANSACTION

     

    SET @Msg = ERROR_MESSAGE()        

     

    RETURN -1    

    END CATCH

     

     4.1 XACT_STATE()

      IF (XACT_STATE() = 1) AND (@itc = 0) COMMIT TRAN;

      1 -- The session has an active transaction. The session can perform any actions, including writing data and       committing the transaction. 

      0 -- There is no transaction active for the session.

      -1 -- The session has an active transaction, but an error has occurred that has caused the transaction to be     classified as an uncommittable transaction.

     

     

     

     

    你永远不知道下一个转角等待你的是什么。
  • 相关阅读:
    FCKEditor使用说明
    如何查看索引或table所佔用的實際空間
    java字节输入流
    文件的读写操作
    利用JProfiler
    javascript面向对象技术基础(五)
    深刻理解Linux进程间通信(IPC)
    JAVA中操作数据库方式与设计模式的应用 2
    javascript面向对象技术基础(六)
    FCKeditor在线编辑器
  • 原文地址:https://www.cnblogs.com/Nagisa-Saku/p/5706515.html
Copyright © 2011-2022 走看看