Sqlserver使用遊標迴圈插入,把select語句的結果當成value值的一部分insert到一張表
查詢出所有job名稱
select name from IBDMMSQL.msdb.dbo.sysjobs where enabled=1 and name not like 'Database%' and name not like 'DB%' order by 1
把job名稱當成第二個欄位的value值(如下的'job_name')插入[jobs].[Settings]
insert into [jobs].[Settings] values (3008,'job_name',null,null,GETDATE(),'Lukes Liao',null,null)
把[jobs].[Settings]新增的SettingID(自增長欄位)當成第一個欄位value值(如下的172)插入[jobs].[Subscriptions]
insert into [jobs].[Subscriptions] values(172,'Programming@will.com')
insert into [jobs].[Subscriptions] values(172,'DBA@will.com')
寫法
遊標1:把job名稱當成第二個欄位的value值插入[jobs].[Settings]
DECLARE @jobname varchar(200) --宣告變數,使用者接收迴圈時的變數
DECLARE RunPerRow CURSOR FOR --定義遊標
select name from IBDMMSQL.msdb.dbo.sysjobs where enabled=1 and name not like 'Database%' and name not like 'DB%' and name not in ('sp_purge_jobhistory','syspolicy_purge_history') order by 1
OPEN RunPerRow --開啟遊標
FETCH NEXT FROM RunPerRow into @jobname --從遊標裡取出資料賦值到宣告的變數中
while @@FETCH_STATUS = 0 --返回被FETCH語句執行的最後遊標的狀態,0表示fetch語句成功,1表示fetch語句失敗,2表示被提取的行不存在
begin
insert into [jobs].[Settings] values (2994,@jobname,null,null,GETDATE(),'Lukes Liao',null,null)
print 'The cursor successfully fetched a row'
print @jobname
FETCH NEXT FROM RunPerRow into @jobname --轉到下一個遊標,沒有會死迴圈
end
CLOSE RunPerRow --關閉遊標
DEALLOCATE RunPerRow --撤銷遊標
遊標2:把[jobs].[Settings]新增的SettingID(自增長欄位)當成第一個欄位value值插入[jobs].[Subscriptions]
DECLARE @SettingID int --宣告變數,使用者接收迴圈時的變數
DECLARE RunPerRow CURSOR FOR --定義遊標
select SettingID from [jobs].[Settings] where SettingID>172 order by 1
OPEN RunPerRow --開啟遊標
FETCH NEXT FROM RunPerRow into @SettingID --從遊標裡取出資料賦值到宣告的變數中
while @@FETCH_STATUS = 0 --返回被FETCH語句執行的最後遊標的狀態,0表示fetch語句成功,1表示fetch語句失敗,2表示被提取的行不存在
begin
insert into [jobs].[Subscriptions] values(@SettingID,'Programming@will.com')
insert into [jobs].[Subscriptions] values(@SettingID,'DBA@will.com')
print 'The cursor successfully fetched a row'
print @SettingID
FETCH NEXT FROM RunPerRow into @SettingID --轉到下一個遊標,沒有會死迴圈
end
CLOSE RunPerRow --關閉遊標
DEALLOCATE RunPerRow --撤銷遊標
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2845721/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL語句將查詢結果插入到另一張表中SQL
- insert into select語句與select into from語句
- Python 迴圈語句的使用Python
- INSERT...SELECT語句對查詢的表加鎖嗎
- SqlServer中迴圈和條件語句SQLServer
- 【SQL】14 UNION 操作符、SELECT INTO 語句、INSERT INTO SELECT 語句、CREATE DATABASE 語句、CREATE TABLE 語句SQLDatabase
- SQLite語句(二):INSERT DELETE UPDATE SELECTSQLitedelete
- python迴圈語句判斷的使用Python
- Python的迴圈語句Python
- c語言中的三種迴圈語句結構C語言
- MySQL複製表結構和內容到另一張表中的SQL語句MySql
- DBeaver如何生成select,update,delete,insert語句delete
- Sqlserver使用遊標迴圈查詢所有sqlserver error日誌帶有Exception的報錯SQLServerErrorException
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- oracle-資料庫- insert 插入語句Oracle資料庫
- 分支語句和迴圈語句
- 比CRUD多一點兒(二):基礎INSERT、SELECT語句
- 前端 JavaScript 中的三種 for 迴圈語句總結前端JavaScript
- Oracle顯示遊標的使用及遊標for迴圈Oracle
- JavaScript for 迴圈語句JavaScript
- Ruby迴圈語句
- TypeScript 迴圈語句TypeScript
- MySQL迴圈語句MySql
- c語言中,while(1)語句使用break語句跳出迴圈C語言While
- Sqlserver、oracle中Merge的使用方法,一個merge語句搞定多個Insert,Update,Delete操作SQLServerOracledelete
- JavaScript 流程控制語句詳解:if語句、switch語句、while迴圈、for迴圈等JavaScriptWhile
- Sqlserver的merge into或delete語句堵塞select語句,鎖型別是LCK_M_ISSQLServerdelete型別
- create table 使用select查詢語句建立表的方法分享
- mysql從一張表中取出資料插入到另一張表MySql
- insert all和insert first語句的用法
- 七 while迴圈語句While
- JavaScript跳出for迴圈語句JavaScript
- 7-迴圈語句
- 教你使用SQLite-insert語句SQLite
- db2 sql批量插入一張表插入另一張表DB2SQL
- C#程式設計基礎第七課:C#中的基本迴圈語句:while迴圈、do-while迴圈、for迴圈、foreach迴圈的使用C#程式設計While
- Python-條件語句和迴圈語句Python
- 【js迴圈語句】for與while的區別JSWhile