Хотите перенести данные из хранилища Oracle на SQL Server

#sql #sql-server #oracle #case

Вопрос:

Я хочу перенести данные из Oracle Datawarehouse на SQL Server в зависимости от условий.

У меня есть 3 столбца сегмента(seg_1,seg_2,seg_3) в table_A в хранилище данных, я хочу перенести их в SQL, но я хочу сделать их одним столбцом на основе столбца, присутствующего в SQL server table_B. Для этого я запущу хранимую процедуру.

 SELECT ID,
       CASE WHEN seg_1 in (select seg from [Servername].[dbname].[schemaname].[table_B]) then seg_1
            WHEN seg_2 in (select seg from [Servername].[dbname].[schemaname].[table_B]) then seg_2
            WHEN seg_3 in (select seg from [Servername].[dbname].[schemaname].[table_B]) then seg_3
       End
from table_A
 

Когда я пытаюсь запустить приведенный выше код в хранимой процедуре, он выдает ошибку, так как table_B-недопустимое имя таблицы. Таблица присутствует на этом сервере и в базе данных. Пожалуйста, помогите мне это сделать.

Комментарии:

1. Какую часть ошибки вы не понимаете? Вам нужно для table_B того, чтобы существовать. Возможно, вам захочется выяснить, почему вы считаете, что он должен существовать, а его нет.

2. В дополнение к комментарию Гордона, в вашем коде явно не указано имя схемы ни для того table_A , ни table_B для другого, и в этом случае ваш запрос может не «видеть» таблицы, даже если они существуют, поскольку они могут отсутствовать в схеме пользователя по умолчанию или dbo. Укажите имена схем для таблиц в запросе.

3. Привет, я указал имена таблиц следующим образом [Имя сервера]. [имя базы данных]. [имя схемы]. [имя таблицы], но все равно получена ошибка как недопустимое имя таблицы.

4. При чем тут Оракул? [Servername].[dbname].[schemaname].[table_B] Предназначено для ссылки на таблицу Oracle? Пожалуйста, поясните, в вашем вопросе не все ясно.

5. Если это означало ссылку на Oracle, формат должен быть SELECT * FROM LinkedServer..Schema.Table