Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 必须声明标量变量_Sql_Sql Server - Fatal编程技术网

Sql 必须声明标量变量

Sql 必须声明标量变量,sql,sql-server,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 varcha

当我尝试执行此查询时,将出现以下错误:

必须声明标量变量

我做错了什么

    @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
您需要如下设置变量的值:

DECLARE @sql NVARCHAR(MAX) 
SET @sql = N'insert into '+@username+ N'routeinformatie'+ N' values(
    @routenaam,@van,@naar,@bezoekadres,@geredenroute,@karakterrit,@toelichting)'
如果这是一个完整的查询,那么您需要在开始时添加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)
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)
您需要如下设置变量的值:

DECLARE @sql NVARCHAR(MAX) 
SET @sql = N'insert into '+@username+ N'routeinformatie'+ N' values(
    @routenaam,@van,@naar,@bezoekadres,@geredenroute,@karakterrit,@toelichting)'
如果这是一个完整的查询,那么您需要在开始时添加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)
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)

您忘记了开始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

您忘记了开始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

必须对所有变量使用DECLARE语句,如下所示


必须对所有变量使用DECLARE语句,如下所示

制作存储过程。当我现在想做的时候,它会说: 必须声明标量变量@username@routenaam.

制作存储过程。当我现在想做的时候,它会说:
必须声明标量变量@username@routenaam.

您能告诉我们必须声明的变量的名称吗?这应该包含在错误消息中,这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是mysql、postgresql、sql server、oracle还是db2,或者完全是其他什么。或者这只是最后一行中缺少的逗号-@username@routenaam应该是@username,@routenaam您能告诉我们必须声明的变量的名称吗?这应该包含在错误消息中,这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是mysql、postgresql、sql server、oracle还是db2,或者完全是其他什么。或者这只是最后一行中缺少的逗号-@username@routenaam应该是@username,@routenaami如果您定义了一个NVARCHAR变量,那么在赋值时应该使用N'..'符号。。。。。。。您应该在每个字符串文本之前使用N前缀!如果您定义了一个NVARCHAR变量,那么在赋值时应该使用N'..'符号。。。。。。。您应该在每个字符串文本之前使用N前缀!还有那些在+@username+部分后面的…考虑到变量后面和开始之前存在as,我假设这实际上是一个存储过程,CREATE过程行丢失了,因此这些实际上是参数,因此不需要声明,但是OPs显示部分代码当然没有帮助,我完全同意你的看法,但我认为这是第一个问题。第二个问题可能在最后一行。是的,我确实在编辑一个存储过程。所以如果我想创建一个新的,我应该这样做?看到我的答案了吗↓.别忘了接受用户对问题的答案鉴于变量之后和开始之前存在as,我假设这实际上是一个存储过程,缺少CREATE procedure行,因此这些实际上是参数,因此不需要声明,但是OPs向我们展示部分代码并没有帮助当然,我完全同意你的观点,但我认为这是第一个问题。第二个问题可能在最后一行。是的,我确实在编辑一个存储过程。所以如果我想创建一个新的,我应该这样做?看到我的答案了吗↓.别忘了接受用户对您的问题的答案您在@username和@routenaam之间的最后一行省略了逗号符号。检查我的回答当您有更多信息要添加时,您应该编辑您现有的问题,而不是将更新作为答案发布-事实并非如此。您在@username和@routenaam之间的最后一行省略了逗号符号。检查我的回答当你有更多信息要添加时,你应该编辑你现有的问题,而不是将更新作为答案发布——事实并非如此。