SQLserver 表變數 事務 儲存過程

2021-06-16 09:27:49 字數 2881 閱讀 6235

在t—sql中使用變數

(一)區域性變數

--1宣告變數  @age和@name

declare  @age int

declare @name nvarchar(5)

--2賦值

----(1)方法1

set @age=18

set @name='張飛'

(2)方法2

select @age=18

select @name='張飛'

--3分別使用set和select 為行號變數@rcount賦值

declare @rcount int

--set @rcount=(select count(*) from tblstudent)

select @rcount=count(*) from tblstudent

print @rcount

select tsage from tblstudent

declare @age int

--set @age=(select tsage from tblstudent)---出錯

select top 5 @age= tsage from tblstudent

select @age

print @@servername

通過while 計算1---100之間奇數的和。

declare @sum int =0

declare @ji int =1

while @ji<=100

begin

if @ji%2<>0

begin

set @sum=@sum+@ji

endset @ji=@ji+1

endprint @sum

通過while 計算1---100之間偶數的和。

declare @sum2 int =0

declare @ou int =0

while @ou<=100

begin

if @ou%2=0

begin

set @sum2=@sum2+@ou

endset @ou=@ou+1

endprint @sum2

事務,就是把一系列操作作為一件事處理,要麼都完成,要麼都不完成!

--begin transaction--開啟事務

begin tran--開啟事務

begin try

declare @errorsum int =0

update bank set balance=balance-900 where cid='0001'

set @errorsum=@errorsum+@@error

update bank set balance=balance+900 where cid='0002'

set @errorsum=@errorsum+@@error

commit

print '提交!!'

end try

begin catch

rollback

print '回滾!'

end catch

--if @errorsum=0

--  begin

--  commit tran

--  print '提交!!!'

--  end

--else

--  begin

--  rollback

--  print '回滾!!!'

--  end

commit tran--提交事務

rollback tran--回滾事務

-----'自動提交事務':系統檢測sql語句是否出錯,如果沒有錯誤就自動提交--

insert into bank values('0003',1000)

--如果希望手動提交,可以回滾在執行插入等操作的時候:

begin tran--開啟事務

insert into bank values('0004',4200000)

rollback--手動回滾或提交事務

--commit

--"隱式事務":預設情況為關,如果開啟了則不自動提交,學要手動提交。

set implicit_transactions on

delete from bank

rollback

select * from bank

--如果隱式事務開啟,然後刪除某個表,在事務沒有結束前,其它查詢不能訪問該錶。

--這就是「鎖」,由於只是執行了乙個sql的操作,沒有結束事務,就會把表鎖住,不讓別人在對他進行操作。放置併發問題出現。

set implicit_transactions off

六、儲存過程!!

--與c#中的方法一樣。儲存過程 有 名/可以有引數/可以有返回值。

--6.1系統儲存過程

--放在系統資料庫 master 中的--可程式設計性---儲存過錯--系統儲存過程中。

使用 sp_helptext 來顯示乙個 儲存過程 中的 ** 。

exec sp_helptext sp_databases

exec sp_helptext sp_helptext

--給資料庫重新命名:

exec sp_renamedb 'test','test123'

--查詢當前資料庫中有多少個表

exec sp_tables

--查詢當前資料庫中的列資訊

exec sp_columns 'student'

自定義儲存過程一般是以 usp_開頭

create proc usp_helloworld

asbegin

print 'hello world!'

end

SQL Server如何使用表變數

參考前乙個例項使用output儲存更新記錄前後資料 改用乙個表變數來實現。首先定義乙個表變數 declare salaryreport table memberid int name nvarchar 100 oldsalary decimal 18,6 newsalary decimal 18,6...

SQLSERVER 中表變數與臨時表

sql server 中的變數表與臨時表 1.臨時表 臨時表和永久表類似,很多永久表具有的功能特性,臨時表都具有,臨時表它的建立是在tempdb中,它只有在乙個資料庫連線結束後或者由sql命名drop掉,才消失,否則他會一直存在,臨時表的建立的時候會產生sql server 系統日誌,臨時表分為兩種...

SQL Server讀取表結構到變數中

工作中,經常會遇到將某個資料表的所有或大部份字段讀取出來情況,比如說跨資料庫進行表更新或插入等。假如欄位名乙個乙個地敲的話,一是效率低,二是會有漏掉的情況。針對此種情況,處理的方法有很多種,比如新建乙個檢視,在裡面錄入select from 表名,系統會自動將星號改成欄位名 sql server 2...