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語句SQL
- SQL語句將查詢結果插入到另一張表中SQL
- Oracle中把一個查詢結果插入到一張表中Oracle
- 編寫迴圈插入表資料的語句。
- SqlServer中迴圈和條件語句SQLServer
- Oracle 使用一條insert語句完成多表插入Oracle
- 【SQL】使用一條INSERT語句完成多表插入SQL
- 怎樣把分組查詢出來的結果插入到一張新表中?
- Sqlserver使用遊標迴圈查詢所有sqlserver error日誌帶有Exception的報錯SQLServerErrorException
- Python 迴圈語句的使用Python
- 一個insert插入語句很慢的優化優化
- 用儲存過程把表裡的資料導成insert語句儲存過程
- Matlab的if語句switch語句for迴圈while迴圈語句練習MatlabWhile
- SQL 把查詢結果當作"表"來使用SQL
- 6、迴圈結構語句
- [MSSQL]以字元','分隔的欄位值,迴圈插入表中SQL字元
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-FOR迴圈中的索引SQL索引
- MySQL複製表結構和內容到另一張表中的SQL語句MySql
- c語言中的三種迴圈語句結構C語言
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- INSERT...SELECT語句對查詢的表加鎖嗎
- python迴圈語句判斷的使用Python
- Python的迴圈語句Python
- C語言goto語句以及用goto語句構成迴圈C語言Go
- Oracle顯示遊標的使用及遊標for迴圈Oracle
- A SELECT statement that assigns a value to a variable must ... (向變數賦值的 SELECT 語句不能與資料檢索操作結合使用 )...變數賦值
- 【MySql】MySql儲存,遊標,迴圈的簡單使用MySql
- oracle SELECT INTO 和 INSERT INTO SELECT 兩種表複製語句詳解Oracle
- TypeScript 迴圈語句TypeScript
- JavaScript for 迴圈語句JavaScript
- MySQL迴圈語句MySql
- Oracle迴圈語句Oracle
- 前端 JavaScript 中的三種 for 迴圈語句總結前端JavaScript
- 【SQL】14 UNION 操作符、SELECT INTO 語句、INSERT INTO SELECT 語句、CREATE DATABASE 語句、CREATE TABLE 語句SQLDatabase
- mysql從一張表中取出資料插入到另一張表MySql
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-基本迴圈(EXIT語句)SQL
- JavaScript 流程控制語句詳解:if語句、switch語句、while迴圈、for迴圈等JavaScriptWhile