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




技術評論社の書籍ガイドへ
上巻:ISBN4-7741-0965-7

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません