随笔 - 149  文章 - 8  评论 - 248  阅读 - 21万

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)

 

 

 

posted on   几度夕阳红了  阅读(379)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
< 2010年2月 >
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 1 2 3 4 5 6
7 8 9 10 11 12 13

点击右上角即可分享
微信分享提示