使用儲存過程的例子:
第一步》建立儲存過程
--建立儲存過程時,最好現在查詢分析器中進行除錯,除錯好以後再建立儲存過程
declare @cgcount int
--檢查狀態
select @retino= '該申請未曾通過審批,不符合辦結條件'
return
endselect @retino= '該申請已經辦結'
return
end--- 其他情況
select @retino= '該申請不符合辦結條件'
return
end
--檢查是否有領取的物品量超過庫存的情況
if @cgcount>0 begin--如果領取的物品量超過了庫存量則不允許提交
select @retino= '領取的物品量超過了庫存量則不允許辦結申請'
endelse begin
--可以正常進行領取物品處理
--1>補充申請
begin transaction --開始事務
-- 執行登記操作
-- a> //插入登記申請記錄
--獲得新申請的id
-- b> //插入申請明細記錄
insert into equitmentinoutreg
from equipmentoffice_myequiplist
-- c> //資料進行領取物品後的資料計算
update equpmentmain
from equpmentmain t1 , equipmentoffice_myequiplistt2
t2.equipmentid = t1.equipmentid)
-- d> //更新申請的狀態
--rollback transaction
commit transaction
select @retino=''
endselect @retino '返回值'
return
err_deal:
rollback transaction
--select "發生錯誤" as retinfo
select @retino = '發生錯誤'
go第二步》在查詢分析器中測試建立的儲存過程
第三步》建立呼叫儲存過程的函式
'申請辦結處理
dim myconnection as sqlconnection =getconnection()
dim mycommand as new sqlcommand
dim pa2 as newsqlclient.sqlparameter("@inputpersonid", sqldbtype.int)
dim pa3 as new sqlclient.sqlparameter("@retino",data.sqldbtype.varchar, 100)
pa2.value = inputpersonid
pa3.direction = parameterdirection.output
mycommand.commandtype =commandtype.storedprocedure
mycommand.connection = myconnection
mycommand.parameters.add(pa1)
mycommand.parameters.add(pa2)
mycommand.parameters.add(pa3)
trymyconnection.open()
mycommand.executenonquery()
finally
myconnection.close()
end try
end function
第四步》呼叫函式進行申請辦結處理
'呼叫儲存過程
dim rtvalue as string
dim userid as string
userid = loginvery() '驗證登陸
if rtvalue = "" then
'沒有錯誤
else
'出錯了,彈出出錯資訊
common.fndisperror(rtvalue)
end if
sqlserver 跨資料庫查詢
by richard tsuis,
.this posting is provided "as is" with no warranties, and confers norights.
跨資料庫伺服器查詢
select col1 from uncname.db1.dbo.table1
where id1=(select top 1 id2 from table2 whereid2=@intuid)
問題:這樣的查詢可能使用相對指定的方式(netbios或tcp/ip)去進行查詢,可能不能體現出資料庫引擎的傳輸優勢。而且直接查詢也可能是導致問題的原因,實際應該通過儲存過程準備好資料集合後再進行查詢。
方法2:
通過openrowset函式完成資料庫伺服器聯接和查詢操作,準備好資料集合。
當然這種情況下所使用的資料集合是唯讀的,更新方面可以考慮另外的控制方法,在資料庫裡可以通過方法1進行,在程式裡可以通過資料庫連線區別操作:
declare @emptycontent table (
recordid uniqueidentifier,
content nvarchar(255) )
insert into @emptycontent (recordid, content)
select local.recordid, local.content
fromopenrowset('sqloledb','remoteserver';'accountname';'password',
'select recordid, content from database.dbo.table where content ='''' ') as local
select gh.recordid, gh.content
from table gh
where content = ''
and not exists(select * from @emptycontent ec where ec.recordid =gh.recordid )
從一張表資料匯入到另一張表
1 insert into select語句 語句形式為 insert into table2 field1,field2,select field1 field2 from table1 或者 insert into table2 select from table1 注意 1 要求目標表tabl...
從一張表中複製資料到另一張表中
分為兩種情況,一種是目標表不存在,另一種是目標表已存在,語法是不同的。分別以sqlserver和oracle為例,兩者略有不同。sqlserver中,如果目標表不存在 select into新錶名from舊表名 sqlserver中,如果目標表已存在 insertinto新錶名select from...
怎麼從一張表中查詢資料插入到另一張表中
如果兩表字段相同,則可以直接這樣用。insert into table a select from table b 如果兩表字段不同,a表需要b中的某幾個字段即可,則可以如下使用 insert into table a field a1,field a2,field a3 select field ...