Sql server 帮助理解SQL存储过程参数

Sql server 帮助理解SQL存储过程参数,sql-server,tsql,sql-server-2008,stored-procedures,Sql Server,Tsql,Sql Server 2008,Stored Procedures,我是SQL新手,现在正在处理存储过程。 我正在看另一个开发人员的代码,我看到了以下声明: ALTER PROCEDURE [deleteRecords_UNICODE] @RecordIDs ty_NumberList READONLY 问题1:“ty_NumberList”是什么意思 问题2:我正在创建一个需要使用上述参数的存储过程。 当我创建“DECLARE@RecordNum int”时,我显然得到了错误 Operand type clash: int is incompatible w

我是SQL新手,现在正在处理存储过程。 我正在看另一个开发人员的代码,我看到了以下声明:

ALTER PROCEDURE [deleteRecords_UNICODE]
@RecordIDs ty_NumberList READONLY
问题1:“ty_NumberList”是什么意思

问题2:我正在创建一个需要使用上述参数的存储过程。 当我创建“DECLARE@RecordNum int”时,我显然得到了错误

Operand type clash: int is incompatible with ty_NumberList
我猜我必须通过:
来解决这个问题 a) 创建类型为“ty_NumberList”的变量
b) 然后使用我通常的DECLARE@RecordNum int
c) 然后将@RecordNum的值传递到ty_NumberList

问题3:如何在SQL中实现上述步骤


任何帮助都将不胜感激

ty_NumberList
是一种

你会像这样使用它

DECLARE @Nums AS ty_NumberList;

INSERT INTO @Nums VALUES (1);

EXEC YourProc @Nums;

该代码使用的是
表值参数
s,请在联机丛书中阅读:

读一下这个

你的电话号码意味着你必须告诉我们 因为它是用户定义的数据类型

在声明存储过程时 参数

我们不需要使用declare

创建过程样本@name vanchar(20), @num varchar(20)开始

选择

结束


那代码让它成为一个表值参数呢?在没有看到CREATE TYPE语句的情况下,它不是任何用户定义的类型吗?
READONLY
对于TVP是必需的(不确定它是否对其他数据类型有效,但在任何情况下,它的存在和类型的名称都会向我指示TVP)@AL W:查看CREATE类型后,我可以确认它确实是TVP。“谢谢你关于只读的留言,@Martin。”。