兩張結構不同的表,從一張表匯入資料到另外一張表

2021-06-18 14:54:09 字數 3189 閱讀 5694

使用儲存過程的例子:

第一步》建立儲存過程

--建立儲存過程時,最好現在查詢分析器中進行除錯,除錯好以後再建立儲存過程

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 ...