zoukankan      html  css  js  c++  java
  • SQL知多少

    1、带事务的存储过程返回(此存储过不全,不能正常执行)

    代码
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    -- =============================================
    --
    Create date: 2009-11-12
    --
    Description: 测试带事务的存储过程
    --
    =============================================

    ALTER PROCEDURE [dbo].[Pro_TestTransaction]
    (
    @UserCode nvarchar(20) --用户名
    )
    As

    DECLARE @return_value int
    set @return_value = -1

    begin
    begin tran --开始事务
    begin try
    set xact_abort on --产生错误,就回滚
    --给用户添加资金记录【摘要为:资料审核费用】
    exec @return_value=[dbo].[Pro_FundRecord] @UserCode,@HandlingCharge,@CashApplicationExpense, @Note,null
    if(@return_value !=0) 此处如果执行不成功的话,不能返回,如果返回的话,就出现抛出当前应用程序发生严重错误的
    begin
     rollback --回滚事务 
    return @return_value
    end

    commit --提交事务
    end try
    begin catch
    rollback --回滚事务
    return @return_value
    end catch

    return 0 --成功
    end

    2、给某个数据库建立一个单独的用户

    (1)、建立用户

    在默认数据库里勾选这个用户要控制的数据库

    (2)、用户映射

     

    这样每次管理这个数据库的话,用这个账户就OK了。

    注意dbo_owner要勾上

    Sql datediff用法

    代码
    SELECT DATEDIFF(year, '2005-12-31 23:59:59' --1
    ,
    '2006-03-10 00:00:00');
    SELECT DATEDIFF(month, '2005-12-31 23:59:59' --3
    ,
    '2006-03-10 00:00:00');
    SELECT DATEDIFF(day, '2005-12-31 23:59:59' --69
    ,
    '2006-03-10 00:00:00');
    SELECT DATEDIFF(week, '2005-12-31 23:59:59' --9
    ,
    '2006-03-01 00:00:00');
    --quarter,dayofweek,hour,minute,second,millisecond

    sql执行带参存储过程

    EXEC 存储过程名字 ‘参数1′,’参数2′,数值参数

    exec Ads_SP_GetList 'Ads_Advertiser',25,1,'','ClientID','asc'

    SQL 临时表的用法
    临时表分成本地临时表和全部临时表

    本地临时表:以一个#号开头的那些表名,只有在创建本地连接上才能看到这些表,链接断开时临时表即被删除(本地临时表未创建它的该链接的会话索独享)或者这样说局部临时表是由当前用户创建的,并且只有当前用户的会话才可以访问。

    全部临时表:以两个##号开头的那些表名,在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其他任务停止应用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们(换句话说旧的任务还可以引用)。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。

    重启数据库服务器的话,临时表都会被移除。

    创建和删除临时表:

    select ProductID,ProductName into ##lhking from Products
    select ProductID,ProductName into #luke from Products

    drop table ##lhking
    drop table #luke

    下面这个创建的表,不能是#lhking,要是##lhking

    declare @sql varchar(100)
    set @sql='select ProductID,ProductName into ##lhking from Products'
    print @sql
    exec(@sql)
    select * from ##lhking
    drop table ##lhking

    Sql性能查看工具Sql Server Profile,新建跟踪,可以看到每一条sql的执行。

     

    Sql执行耗时计算: 

    declare @date1 datetime
    declare @date2 datetime
    select @date1=getdate()
    --测试语句
    select * from employees
    select @date2=getdate()
    select datediff(millisecond, @date1, @date2)
  • 相关阅读:
    批量拷贝局域网内的文件
    ★★★感谢伤害你的人★★★
    asp 调用子程序不能使用括号 错误解决办法
    喜欢在网上写日志的人是不是都想有朝一日被人看到?
    星语心愿
    执着
    推荐一个.NET(C#)的HTTP辅助类组件restsharp
    如何让DEV跳出的“提示试用版”的对话框不再显示
    Debugging with GDB (3) 退出gdb
    Debugging with GDB (1) 介绍
  • 原文地址:https://www.cnblogs.com/lhking/p/1663503.html
Copyright © 2011-2022 走看看