如何调用将表类型作为 OTL 参数的存储过程?
这是我的数据库的样子:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF Exists dbo.spTest
DROP TYPE IF Exists dbo.List
--- Create UDTT
CREATE TYPE dbo.List as TABLE
(
k varchar(32) NOT NULL,
v float NOt NULL
)
GO
CREATE PROCEDURE dbo.spTest
@list List READONLY
AS
BEGIN
SELECT * from @list
END
GO
--- Call spTEST
DECLARE @l List
INSERT INTO @l(k, v)
VALUES ('A', 1.0);
EXECUTE [dbo].[spTest]
@list = @l
GO
我试图用 C++ 编写代码,但我不确定如何创建列表参数或指定列表类型
otl_stream i(50, // buffer size
"{call dbo.spTest("
" :list<char[32],in> "
")}",
db, // connect object
);
更新:OTL Skuchin 的审计员在一封私人电子邮件中告诉我这是不可能的。“OTL 不支持这些。您可以做的最好的事情是通过常规插入将一堆行插入临时表/表变量中,并在您的 SP 中从中读取”