stored proc
SQL Server では、 usingIF... ELSE
コンストラクトでこれを行うことができます。これは、構造の使用方法を説明するMSDNドキュメントです...
カウント部分は次のようになります-
IF ((SELECT COUNT(PC.id) FROM [server08].[db01].[dbo].[tblesrc01] PC) > 500)
BEGIN
TRUNC ...
INSERT ...
END
データの保存部分には、コマンド を使用できますbcp
。Transact-SQL
結果セットをステートメントから にエクスポートできますdata file
。Transact-SQL ステートメントは、分散クエリや複数のテーブルを結合する SELECT ステートメントなど、結果セットを返す任意の有効なステートメントにすることができます。
次の例では、名前を AdventureWorks2008R2 Person.Person テーブルから Contacts.txt データ ファイルにエクスポートします。名前は、姓、名の順に並べられています。この例は、Microsoft Windows コマンド プロンプトから実行されます。
bcp "SELECT FirstName, LastName FROM AdventureWorks2008R2.Person.Person ORDER BY LastName, Firstname" queryout Contacts.txt -c -T
ストアド プロシージャ内で bcp を実行する -
DECLARE @job NVARCHAR(100)
SET @job ='execute_bcp'
EXEC msdb..sp_add_job @job_name = @job,
@description = 'Execute bcp command',
@owner_login_name = 'sa',
@delete_level = 1
EXEC msdb..sp_add_jobstep @job_name = @job,
@step_id = 1,
@step_name ='Command Shell Execution', @subsystem = 'CMDEXEC',
@command = 'bcp "SELECT Name FROM [DatabaseName].[dbo].[Employees]" queryout "filepath.txt" -c -T',
@on_success_action =1
EXEC msdb..sp_add_jobserver @job_name =@job
EXEC msdb..sp_start_job @job_name = @job