求助:
问题:表类型跨库 报错“操作数据类型冲突 不兼容”
来源:两个数据库A 和 B
在数据库A中定义了用户自定义表类型 Type1, 并定义存储过程:ALTER PROCEDURE [dbo].[Sp_AddOrder]
@OrderTable Type1 READONLY
ASBEGIN
SET NOCOUNT ON;
End
在数据库B中调用存储过程Sp_AddOrder 的时候应该怎么传入 “@OrderTable Type1 READONLY”。
数据库B中没办法 A.dbo.Type1 这样使用类型....表类型引用
问题:表类型跨库 报错“操作数据类型冲突 不兼容”
来源:两个数据库A 和 B
在数据库A中定义了用户自定义表类型 Type1, 并定义存储过程:ALTER PROCEDURE [dbo].[Sp_AddOrder]
@OrderTable Type1 READONLY
ASBEGIN
SET NOCOUNT ON;
End
在数据库B中调用存储过程Sp_AddOrder 的时候应该怎么传入 “@OrderTable Type1 READONLY”。
数据库B中没办法 A.dbo.Type1 这样使用类型....表类型引用
那么调用的时候也必须是这个类型的,不能使用其它结构一样的表调用方法
declare @t Type1
insert into @t values(............)
exec [dbo].[Sp_AddOrder] @t比如你有一个表 tb 结构和你定义的表类型Type1 一模一样
你是不能使用exec [dbo].[Sp_AddOrder] tb 的方法
只能用
declare @t Type1
insert into @t select * from tb
exec [dbo].[Sp_AddOrder] @t关键类型不能被夸库引用。所以你还需要在b里面在定义一次Type1
程序调用sp传一个datatable是比较方便。这可能是它唯一的优点吧
我在B中定义了类型 Type1 之后去调用A中的存储过程:
B中的存储过程:USE B
Go
CREATE PROCEDURE Sp_a
-- Add the parameters for the stored procedure here
@t Type1 READONLY
AS
BEGIN
SET NOCOUNT ON;
PRINT 'Sp_a'
END
GOA中调用:USE A
Go
DECLARE @t Type1
EXEC IESDB.dbo.Sp_a @t
操作数类型冲突: Type1 与 Type1 不兼容