Để đối phó với nhận xét này (nếu tôi đúng và rằng việc sử dụng cơ sở dữ liệu TVPs giữa là không thể):
lựa chọn gì tôi có trong tình huống này? Sử dụng loại XML?
Cách tiếp cận thuần túy sẽ là nói rằng nếu cả hai cơ sở dữ liệu đang làm việc với cùng một dữ liệu, chúng phải được hợp nhất vào một cơ sở dữ liệu duy nhất. Nhà thực dụng nhận ra rằng điều này không phải lúc nào cũng có thể - nhưng vì bạn rõ ràng có thể thay đổi cả người gọi và callee, có thể chỉ cần sử dụng bảng tạm thời mà cả hai procs đã lưu đều biết.
Tôi không tin rằng nó có thể - bạn không thể tham khảo một loại bảng từ cơ sở dữ liệu khác, và ngay cả với định nghĩa kiểu giống hệt nhau trong cả DBS, một giá trị của một loại không thể chuyển nhượng cho khác.
Bạn không qua bảng tạm thời giữa cơ sở dữ liệu. Bảng tạm thời luôn được lưu trữ trong tempdb và có thể truy cập được vào kết nối của bạn, miễn là kết nối được mở và bảng tạm thời không bị giảm.
Vì vậy, bạn tạo bảng tạm thời trong người gọi:
CREATE TABLE #Values (ID int not null,ColA varchar(10) not null)
INSERT INTO #Values (ID,ColA)
/* Whatever you do to populate the table */
EXEC OtherDB..OtherProc
Và sau đó trong callee:
CREATE PROCEDURE OtherProc
/* No parameter passed */
AS
SELECT * from #Values
Nguồn
2012-03-02 11:01:17
Tôi không tin rằng nó có thể - bạn không thể tham chiếu đến một loại bảng từ một cơ sở dữ liệu khác và thậm chí với các định nghĩa kiểu giống hệt nhau trong cả hai DB, một giá trị của một loại không thể gán cho loại kia. –
Tôi có lựa chọn nào trong tình huống này? Sử dụng loại XML? – hgulyan