必须声明标量变量@ Var1

克罗克

错误:

我在SELECT * FROM @SportsTable报告错误时必须声明标量变量。我不明白,如果它被声明为存储过程的参数,我应该不能使用它?如果我删除该If NOT EXISTS行,程序将正确编译。

 USE [DB]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[sp_Sports_Insert]
    (
            @SportsTable dbo.TVP_SportsTable READONLY
        )      
    AS

    if NOT EXISTS (SELECT SportsTable.SportGUID FROM SportsTable WHERE SportsGUID = @SportsTable.SportsGUID)
    BEGIN
       INSERT INTO [dbo].[SportsTable]
       SELECT * FROM @SportsTable
    END

目的:

将表从Visual Studio 2008传递到参数TVP_SportsTable。然后在[dbo] .SportsTable中插入与现有行不匹配的所有行。如果TVP_SportsTable中的输入行与[dbo] .SportsTable中的现有行匹配,则应忽略该行,其余的应插入。

*注意:TVP_SportsTable引用了用户定义的类型,它是在服务器上定义的,其结构与dbo.TVP_SportsTable *

马丁·史密斯

为了达到明确的目标,您可以使用

INSERT INTO [dbo].[SportsTable]
SELECT *
FROM   @SportsTable vST
WHERE  NOT EXISTS(SELECT *
                  FROM   [dbo].[SportsTable] ST WITH(UPDLOCK, ROWLOCK, HOLDLOCK)
                  WHERE  ST.SportsGUID = vST.SportsGUID) 

表变量和TVP的规则与普通表没有什么不同。SELECT查询中使用它们而未在FROM子句中或JOIN第一个引入它们是无效的

各种锁定提示可以避免并发执行产生竞争条件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解决EF在调用存储过程中出现的错误“必须声明标量变量@var”?

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量“ @”

来自分类Dev

必须声明标量变量@

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量表

来自分类Dev

SQLFiddle:必须声明标量变量错误

来自分类Dev

SQL Server:必须声明标量变量

来自分类Dev

必须声明标量变量bcp错误

来自分类Dev

必须声明标量变量“ @Brand”

来自分类Dev

必须声明标量变量错误

来自分类Dev

必须声明标量变量“ @ OTitle @ FirstName”

来自分类Dev

必须声明标量变量“ @cnt”

来自分类Dev

必须声明标量变量吗?

来自分类Dev

必须声明标量变量“ @tglMasukKerja”

来自分类Dev

必须声明标量变量(SQL)

来自分类Dev

必须声明标量变量-SQL Server

来自分类Dev

必须声明标量变量“ @loginName”

来自分类Dev

必须声明@telefoonnummer的标量变量吗?

来自分类Dev

必须声明标量变量“ @Modifier”

来自分类Dev

SQL - 必须声明标量变量错误

来自分类Dev

SQL 错误 - 必须声明标量变量

来自分类Dev

必须声明标量变量“@EmailID”

来自分类Dev

必须声明标量变量“@GenName”

来自分类Dev

JAXB用变量解析XML文件(例如$(var1))