2017-01-30 13 views
0

このストアドプロシージャにexteralパラメータを追加すると、[OK]を実行します。ストアドプロシージャ

insert into TEMP (name,surname) 
    select name, surname 
    from MEMBERS 
    where active = 1 

しかし、私はプロシージャに2つのパラメータ(月、年)を追加したいと思います。

は、私が試した:

 @p1 date, 
    @p2 date 
AS 
BEGIN 
    INSERT INTO TEMP (name, surname, month, year) 
     SELECT 
      name, surname 
     FROM 
      MEMBERS 
     WHERE 
      active = 1, @p1, @p2 
END 

が、それは動作しません。どうして?私たちは@ P1に挿入することはできませんので、両方の列

ためのint型のデータ型である必要があり、列(月、年)を追加し、テーブルの一時を作成しながら、

sp.Params.ParamByName('p1').asdateTime :=formatdatetime('mm', dxDateTimeWheelPicker1.DateTime); 
sp.Params.ParamByName('p2').asdateTime :=formatdatetime('yyyy',dxDateTimeWheelPicker1.DateTime); 

答えて

2

が実際:

@p1 date, 
@p2 date 
AS 
BEGIN 
insert into TEMP (name,surname,month,year) 
select name,surname,@p1,@p2 from MEMBERS where active=1 

パラメータがまだ設定されている...

+0

uはuser3351050 とどのようにあなたが間違っているものをChanukya @この答え – Chanukya

+0

を受け入れた@ ...それが正しい方法を説明することができます答えは?これは、私たちが話しているパラメータを持つストアドプロシージャです。どのようにそれが間違っているのですか? :)プロシージャを実行すると、パラメータが検索されます。彼らは同じテーブルにいる必要はありません。 – user763539

+0

実質的には、データ型の日付と同じ年のカラムの名前として月を指定し、 のコーディング標準を持ち、私の質問に否定的な投票をして書いています。@ user763539 – Chanukya

-1

パラメータ後、私は次のように私のプログラムで提供します@ INSERT文で直接P2
と@ p1と@ p2のデータ型は、我々は彼がユーザー ので、私は一つの変数から月のように仮定し、今年は別の変数

からでは言及しなかったことを取る必要がある変数から日付時刻であります
declare @p1 date, 
    @p2 date 

    AS 
BEGIN 

insert into TEMP (name,surname,month,year) 
select name,surname,month(@p1),year(@p2) from MEMBERS where active=1 

END 
関連する問題