2017-01-30 141 views
0

此存儲過程執行確定:添加exteral參數的存儲過程

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

不過,我想兩個參數(月,年)添加到程序。

我想:

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

,但它不會工作。爲什麼?

參數後,我提供我的程序,如:

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

+0

@ Chanukya什麼是錯的與答案?這是一個帶有我們正在討論的參數的存儲過程。它怎麼會是錯的? :)當程序執行時,它會查找參數。他們不需要在同一張桌子上。 – user763539

+0

幾乎認爲任何人都會將月份作爲數據類型的日期和年份的列的名稱,並且對於您正在寫出沒有任何 編碼標準並給予我的問題的負面投票... @ user763539 – Chanukya

-1

在創建表溫度增加(月,年),這應該是兩列

,因爲我們不能插入@ P1 int數據類型的列, @ 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