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)
原文地址:https://www.cnblogs.com/lhking/p/1663503.html