| MSDE FunClub |
|
最終更新日 : 2000/08/11 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.11
|
|
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