必须声明标量变量

时间:2015-05-07 09:53:37

标签: sql sql-server

当我尝试执行此查询时,我会收到错误:

  

必须声明标量变量

我做错了什么?

    @username varchar(50),
    @routenaam varchar(50),
    @van varchar(50),
    @naar varchar(50),
    @bezoekadres varchar(50),
    @geredenroute varchar(50),
    @karakterrit varchar(50),
    @toelichting varchar(50)
    as
    begin
    DECLARE @sql NVARCHAR(MAX) = 'insert into '+@username+'routeinformatie'+' values(
    @routenaam,@van,@naar,@bezoekadres,@geredenroute,@karakterrit,@toelichting)'


    EXEC sp_executeSQL @sql,N',
    @username varchar(50),
    @routenaam varchar(50),
    @van varchar(50),
    @naar varchar(50),
    @bezoekadres varchar(50),
    @geredenroute varchar(50),
    @karakterrit varchar(50),
    @toelichting varchar(50)
    ',@username@routenaam,@van,@naar,@bezoekadres,@geredenroute,@karakterrit,@toelichting
    end

4 个答案:

答案 0 :(得分:2)

您需要set变量的值,如下所示:

DECLARE @sql NVARCHAR(MAX) 
SET @sql = N'insert into '+@username+ N'routeinformatie'+ N' values(
    @routenaam,@van,@naar,@bezoekadres,@geredenroute,@karakterrit,@toelichting)'

此外,如果这是完整的查询,那么您需要在开始时添加声明

DECLARE @username varchar(50),
   @routenaam varchar(50),
   @van varchar(50),
   @naar varchar(50),
   @bezoekadres varchar(50),
   @geredenroute varchar(50),
   @karakterrit varchar(50),
   @toelichting varchar(50)

答案 1 :(得分:2)

你忘了启动DECLARE子句,在最后一行你省略了前两个变量之间的逗号:

DECLARE   
    @username varchar(50),
    @routenaam varchar(50),
    @van varchar(50),
    @naar varchar(50),
    @bezoekadres varchar(50),
    @geredenroute varchar(50),
    @karakterrit varchar(50),
    @toelichting varchar(50)
    as
    begin
    DECLARE @sql NVARCHAR(MAX) = 'insert into '+@username+'routeinformatie'+' values(
    @routenaam,@van,@naar,@bezoekadres,@geredenroute,@karakterrit,@toelichting)'


    EXEC sp_executeSQL @sql,N',
    @username varchar(50),
    @routenaam varchar(50),
    @van varchar(50),
    @naar varchar(50),
    @bezoekadres varchar(50),
    @geredenroute varchar(50),
    @karakterrit varchar(50),
    @toelichting varchar(50)
    ',@username, @routenaam,@van,@naar,@bezoekadres,@geredenroute,@karakterrit,@toelichting
    end

答案 2 :(得分:1)

//Date
if($arrDate!=NULL){
    $booking->setField('arrival_date', '07/17/2015');
}
//Time
if($arrTime!=NULL){
    $booking->setField('arrival_time', '11:00:00');
}
$savedBooking = $booking->commit();

制作存储过程。当我想现在就说它: “必须声明标量变量”@ username @ routenaam“。”

答案 3 :(得分:0)

您必须将DECLARE语句与All变量一起使用

DECLARE @username varchar(50),
   @routenaam varchar(50),
   @van varchar(50),
   @naar varchar(50),
   @bezoekadres varchar(50),
   @geredenroute varchar(50),
   @karakterrit varchar(50),
   @toelichting varchar(50)