SQL错误:将表参数传递给表值函数时,“必须声明标量变量”

无盖的

以下简单的SQL示例返回错误。

这是传递给表值函数的表类型:

CREATE TYPE Ids
    AS TABLE
    (
        Id int NOT NULL,
        PRIMARY KEY( Id )
    );
GO

这是失败的表值函数:

CREATE FUNCTION GetIds
(
    @ids -- or null
        Ids READONLY
)
RETURNS
    @result
        TABLE
        (
            EachId int
        )
AS
BEGIN
    IF @ids IS NOT NULL
        INSERT INTO @result
            SELECT Id
            FROM @ids;
    RETURN;
END;
GO

返回的错误是:

消息137,级别16,状态1,过程GetIds,第28行
必须声明标量变量“ @ids”。

我读过一些文章,说当SQL兼容性级别太旧时会发生这种情况,但是以下内容返回100:

SELECT compatibility_level 
FROM sys.databases 
WHERE name = 'TheDatabaseName';

任何建议将不胜感激。

迈克·克拉克

让我告诉你表类型参数就像一个数据表。

因此,如果您想在条件上加上条件

只需更改您的if条件,如下所示:

IF (select count(*) from @ids) > 0

完整的功能代码为:

CREATE FUNCTION GetIds
(
@ids Ids READONLY      
)
RETURNS @result TABLE(EachId int)
AS
BEGIN
IF (select count(*) from @ids) > 0
    INSERT INTO @result
    SELECT Id FROM @ids;            
RETURN;
END;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL错误:将表参数传递给表值函数时,“必须声明标量变量”

来自分类Dev

将表值参数传递给参数化SQL语句时,“必须声明标量变量”错误

来自分类Dev

使用表参数创建存储过程时出现错误“必须声明标量变量”

来自分类Dev

在T-SQL中使用内存表时出现错误“必须声明标量变量”

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用DECLARE语句时尝试从asp.net传递参数,但收到错误消息“必须声明标量变量” @pID”

来自分类Dev

必须声明标量变量-参数错误

来自分类Dev

必须在表类型上声明标量变量@insertValues

来自分类Dev

必须在表类型上声明标量变量@insertValues

来自分类Dev

更新SQL Server中的表变量并获取必须声明标量变量

来自分类Dev

必须声明标量变量 - 用于填充 DataGridView 的 SQL 参数

来自分类Dev

sql数据库错误“必须声明标量变量”

来自分类Dev

SQL错误:必须声明一个标量变量

来自分类Dev

T-SQL:尝试将查询的输出保存到变量时,“必须声明标量变量”

来自分类Dev

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

来自分类Dev

必须声明标量变量bcp错误

来自分类Dev

必须声明标量变量错误

来自分类Dev

SQL Server:必须声明标量变量

来自分类Dev

必须声明标量变量(SQL)

来自分类Dev

必须声明标量变量-SQL Server

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量“ @”

来自分类Dev

必须声明标量变量@

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

来自分类Dev

必须声明标量变量

Related 相关文章

热门标签

归档