0

ここでストアド プロシージャを作成するのは初めてです。SELECT表 1 ( EmpTBL) からデータを取り込もうとしていたのに、それINSERTを表 2 ( EventTBL)に取り込もうとしました

犯人はこの行だと思います:

@Ename varchar(250) = NULL, 
@Edate varchar(250) = NULL,

私の論理は正しい方向に進んでいると思いますが、なぜそれがうまくいかないのかわかりません。

次に何をすべきかわからない。

ALTER PROCEDURE spBdayEmp
   (@Ename varchar(250) = NUll,
    @Edate varchar(250)= NUll,
    @Etype varchar(250)  = 'Bday')
AS 
    INSERT INTO EventTBL(EventName, EventDate, EventType)
    VALUES (@Ename, @Edate, @Etype)

    SELECT
        @Ename =  (Ename + ' ' + Lname),    
        @Edate =  DATEADD(YY, DATEPART(YYYY, GETDATE()) - DATEPART(YYYY,dateOfBirth), dateOfBirth) 
    FROM 
        EmpTBL   
    WHERE  
        DATEADD( Year, DATEPART( Year, GETDATE()) - DATEPART( Year, DateOfBirth), DateOfBirth) BETWEEN CONVERT( DATE, GETDATE()) AND CONVERT( DATE, GETDATE() + 30); 

どのように値を取得しますか? @Ename、@Edate?

SELECT クエリ "Ename + ' ' + Lname," equals "@Ename" および " DATEADD(YY, DATEPART(YYYY, GETDATE()) - DATEPART(YYYY,dateOfBirth), dateOfBirth)" の結果が必要です。 "@Edate" と同じですか?

4

4 に答える 4

0

変数に値を選択する前に、挿入を行います。

もう 1 つの考慮事項 - あなたのコードは、select から 2 つ以上の結果を返すことをどのように処理しますか?

次のようなパターンを使用する方がよい場合があります。

Insert into table2 select values from table1
于 2015-10-29T08:57:43.140 に答える