2017-01-30 153 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