2016-12-09 6 views
0

テーブルから名前、領域、開始日、終了日を入力として受け入れ、名前、領域、および値を挿入するストアドプロシージャをSQLで作成する方法startdateとenddateの間の各日付について、日付(3列の名前、面積、日付)を持つテーブルに変換します。テーブルから値を取り出して新しいテーブルに挿入するストアドプロシージャを作成する方法

+0

新しいテーブルとはどういう意味ですか? – DarkKnight

+3

@ManojKumar。 。 。関数はデータベースの状態を変更しません(https://msdn.microsoft.com/en-us/library/ms186755.aspx)。あなたはおそらくストアドプロシージャを意図しているので、ヒントは 'CREATE PROCEDURE'です。 –

+0

名前、エリア、日付が3列のテーブルです –

答えて

0

これはできません。 SQL Serverの関数でDDLおよびDML操作を実行することはできません。

Gordonが示唆したように、これを達成するにはストアドプロシージャを使用する必要があります。ここで

あなたは、パラメータとして変数を取得し、あなたの新しいテーブルを作成するために、最後のSELECT文を使用することができます

http://www.sqlinfo.net/sqlserver/sql_server_stored_procedure_INSERT.php

+0

@Darknight希望の結果を得るためにspを作成する方法を教えてください –

+0

@DhanuKumar:答えのリンクを確認してください。 – DarkKnight

+0

リンクをありがとう!..しかし、リンクはストアドプロシージャを使用してちょうど通常の挿入を示していますが、ここで私はstartdateとenddateの間のすべての日付のレコードを挿入する必要があります –

0
DECLARE @name NVARCHAR(20) = 'name'; 
DECLARE @area NVARCHAR(20) = 'area'; 
DECLARE @startDate DATE = '2016-11-30'; 
DECLARE @endDate DATE = '2016-12-30'; 

DECLARE @currentDate DATE = @startDate; 

SELECT 
    @currentDate AS Date 
INTO 
    #dates; 

WHILE(@currentDate < @endDate) 
    BEGIN 
     SET @currentDate = DATEADD(d, 1, @currentDate); 
     INSERT INTO #dates 
     VALUES(@currentDate); 
    END; 

SELECT 
    @name, 
    @area, 
    * 
FROM 
    #dates; 

を開始するための一例です。

関連する問題