Как получить значение из пользовательского типа таблицы (UDTT)

dba.stackexchange https://dba.stackexchange.com/questions/104859

Вопрос

Цель:

Я хочу достичь и отображать значение @data внутри [wwtest].

Проблема:


UDTT из базы данных [Test], и я получаю сообщение об ошибке:

Имя типа 'test.dbo.tvf_id' содержит больше, чем максимальное количество префиксов.Максимум 1.

Я не знаю, как получить данные из базы данных [Test] в запросе, в данный момент в базе данных [WWTEST]?

Введите описание изображения здесь

create table datatable (id int,
                        name varchar(100),
                        email varchar(10),
                        phone varchar(10),
                        cellphone varchar(10),
                        none varchar(10)                        
                       );

insert into datatable values
  (1, 'productname', 'A', 'A', 'A', 'A'), 
  (2, 'cost', '20', 'A', 'A', 'A'),
  (3, 'active', 'Y', 'A', 'A', 'A');

insert into datatable values
  (4, 'productname', 'A', 'A', 'A', 'A'), 
  (5, 'cost', '20', 'A', 'A', 'A'),
  (6, 'active', 'Y', 'A', 'A', 'A');


insert into datatable values
  (7, 'productname', 'A', 'A', 'A', 'A'), 
  (8, 'cost', '20', 'A', 'A', 'A'),
  (9, 'active', 'Y', 'A', 'A', 'A');




CREATE TYPE [tvf_id] AS TABLE
(
    [id] [int] NULL
    ,[OrdCol] [INT] NOT NULL    
)
GO



DECLARE @data tvf_id INSERT INTO @data([id],[OrdCol]) 
VALUES (8,1), (2,2), (4,3), (1,4), (3,5);
.

Это было полезно?

Решение

Вам необходимо создать тип внутри базы данных, где вы будете объявлять его, - типы данных не могут быть достигнуты между базами данных или серверами.Это не отличается от создания локальной переменной с использованием типа псевдонима - это должно существовать в контексте текущей базы данных (или ваш код должен выполнить в контексте базы данных, где существует тип типа, например.

EXEC dbname.sys.sp_executesql N'DECLARE @t dbo.type; 
  INSERT @t(cols) SELECT whatever...;
  -- do other stuff but it has to be in this dynamic SQL block';
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top