我 正在 处理 一 个 MSSQL 存储 过程 。
我 从 C # 服务 器 收到 一 个 表 值 参数 ( @accountPropsTVP
) 和 一 个 变量 ( @accountID
) 。@accountPropsTVP
有 2 列 :
valueTypeID int
value varchar(max)
注意 : 我 从来 不 确定 这个 表 中 有 多少 行 。@accountID
是 一 个 int
。
- 我 需要 将 收到 的 所有 内容 合并 到 一 个 表 中 , 这样 它 最终 看 起来 就 像 这样 : * *
@temporaryTable
:
@accountID
( 对于 所有 行 始终 相同 )valueTypeID
value
- 以下 是 我 已 尝试 的 操作 , 但 出现 错误 : * *
消息 112 , 级别 15 , 状态 4 , 程序 insertAccountProps
, 第 20 行CREATE TABLE
语句 中 不 允许 使用 变量 。
CREATE PROCEDURE insertAccountProps
-- Received parameters
@accountID int,
@accountPropsTVP accountPropsTVP READONLY
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
-- declare new table
DECLARE @accountPropsTemp TABLE
(
accountID int not null DEFAULT (@accountID),
valueTypeID int not null,
value varchar(max) not null
)
-- insert received TVP into new temp table, so that we can manipulate it (tvp's are read only :( )
INSERT INTO @accountPropsTemp
SELECT *
FROM @accountPropsTVP
-- select all from TVP and add it into temp table created above
INSERT INTO dbo.accountsProps
SELECT *
FROM @accountPropsTemp
END
GO
中 的 每 一 个
也许 有 更 简单 的 方法 ?
1条答案
按热度按时间ee7vknir1#
您的问题在这里:
您正在将一个变量指定为默认值,而错误消息明确指出这是不允许的。
最好的方法是将语法更改为: