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)、用户映射

SQL知多少_第1张图片 

这样每次管理这个数据库的话,用这个账户就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 )

 

 

 

你可能感兴趣的:(sql)