MSDE FunClub | 最終更新日 : 2000/08/11 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) | ||
【第5章318p 〜 320p掲載】 |
-- [SQL05_03.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、 -- 分割テーブルを扱うためのストアドプロシージャを使った -- レコード追加処理です -- -- カレントデータベースを MySampleTest にする USE MySampleTest GO -- ( 件処理されました)のメッセージの表示を抑止する SET NOCOUNT ON GO -- *********************************************************** -- 分割テーブルに対するレコード新規登録用ストアドプロシージャ -- *********************************************************** IF EXISTS (SELECT name FROM sysobjects WHERE name = 'INSERT_REC' AND type = 'P ') BEGIN DROP PROC INSERT_REC -- 既存の同じ名前を削除する END GO CREATE PROCEDURE INSERT_REC @ID char(4) , @DATA varchar(20) , @MON int AS DECLARE @TBLNM varchar(8) DECLARE @SQLSTR nvarchar(100) DECLARE @Ret int -- レコード登録を行う個別のテーブル名を作成する SELECT @TBLNM = 'MON_' + CAST(@MON AS varchar(2)) -- レコード登録用SQL文の文字列を作成する -- パラメータ付き文字列とする SELECT @SQLSTR = N'INSERT INTO ' + @TBLNM + N'(ID,DATA,MON) ' + N'VALUES( @ID , @DATA , @MON ) ' -- sp_executesqlによるパラメータクエリーの実行 EXECUTE @Ret = sp_executesql @SQLSTR , N'@ID char(4),@DATA varchar(20),@MON INT' , @ID , @DATA , @MON IF @Ret <> 0 RETURN 1 -- 登録に失敗した RETURN 0 -- OK GO -- ************************************************* -- 挿入予定のレコードを削除する -- ************************************************* DELETE FROM MON_1 WHERE ID IN( 1010 , 1011 , 1012 ) DELETE FROM MON_2 WHERE ID IN( 2010 , 2011 , 2012 ) DELETE FROM MON_3 WHERE ID IN( 3010 , 3011 , 3012 ) GO -- ************************************************* -- レコード登録を行います -- ************************************************* EXEC INSERT_REC '1010' , 'TEST DATA 1010' , 1 -- MON_1 Table Insert EXEC INSERT_REC '1011' , 'TEST DATA 1011' , 1 EXEC INSERT_REC '1012' , 'TEST DATA 1012' , 1 EXEC INSERT_REC '2010' , 'TEST DATA 2010' , 2 -- MON_2 Table Insert EXEC INSERT_REC '2011' , 'TEST DATA 2011' , 2 EXEC INSERT_REC '2012' , 'TEST DATA 2012' , 2 EXEC INSERT_REC '3010' , 'TEST DATA 3010' , 3 -- MON_3 Table Insert EXEC INSERT_REC '3011' , 'TEST DATA 3011' , 3 EXEC INSERT_REC '3012' , 'TEST DATA 3012' , 3 GO -- 全レコード表示 PRINT '' PRINT '新しくレコードを登録しました[全レコード表示]' SELECT ID , DATA FROM MON_YEAR GO