【发布时间】:2016-09-15 15:01:03
【问题描述】:
我试图将逗号分隔的值作为存储过程的参数,但是当我按下“Enter”键以继续这些值以便它可以在单个屏幕中看到(不滚动)时,SP 不接受这些值按下“Enter”键后提供(表示换行)
USP_SAMPLE_SP @YEAR, @EMPIDS
如果我正在执行如下存储过程:
USP_SAMPLE_SP '2016','111,222,333,444,555'
运行正常
但如果我想像下面这样执行:
USP_SAMPLE_SP '2016','111,222,
333,444,555'
它接受所有值,但是它显示的值最高为“222”,之后它不考虑任何值。
提到“换行符”,我的意思是它接受如下:
USP_SAMPLE_SP '2016','111, 222,333,444,555'
但如果我按下“Enter”,之后就不再接受值了
如果有人能解释这种情况,那将会很有帮助。
注意:有时我需要传递大量值(例如 1000 或以上)。
如果有人知道更好更有效的方法,请提出建议。
首先我将用户定义的表类型创建为 EMPType
CREATE TYPE [dbo].[EMPType] AS TABLE(
FinStartYear varchar(4),
EmpId nvarchar(max) NULL
)
然后我尝试传递这些值以更改我的存储过程,如下所示:
ALTER PROCEDURE [USP_SAMPLE_SP]
-- Add the parameters for the stored procedure here
@FinStartYear EMPType readonly ,
@EmpIDs EMPType readonly
AS
但是当我将鼠标悬停在参数上时,它会显示以下错误:
The Parameter '@FinStartYear' cannot be declared READONLY since it is not table valued parameter.
The Parameter '@EmpIDs' cannot be declared READONLY since it is not table valued parameter.
但是当我尝试更改存储过程时,它会显示以下错误:
Must declare the scalar variable "@EmpIDs".
Must declare the scalar variable "@FinStartYear"
当我将鼠标悬停在“EMPType”上时,它会显示以下错误:
Parameter or variable '@FinStartYear' has an invalid datatype.
注意:在 Programmability -> Types -> User-Defined Table Types ->dbo.EMPType
它显示 EMPType 已创建。
【问题讨论】:
标签: sql-server database sql-server-2008 stored-procedures sql-server-2012