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) 此处如果执行不成功的话,不能返回,如果返回的话,就出现抛出当前应用程序发生严重错误的
beginrollback --回滚事务
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)