Как сделать SQL Pass-through в SAS, создать представление или таблицу - PullRequest
1 голос
/ 10 апреля 2019

Я пытаюсь создать представление базы данных с помощью SAS, SQL выполняется следующим образом

PROC sql; 
CONNECT TO odbc AS myuser(dsn=galaxy);              
EXECUTE(
CREATE VIEW DB.SCHEM.table AS
    SELECT * FROM connection to myuser;
    (SELECT * FROM DB.SCHEM.table2)
)by myuser;
QUIT;

Однако я получаю следующие ошибки

ОШИБКА: ошибка подготовки CLI: [Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server] Неверно синтаксис рядом с ключевым словом «выбрать». : [Microsoft] [Собственный клиент SQL Server 11.0] [SQL Сервер] Неверный синтаксис рядом с ')'.

1 Ответ

2 голосов
/ 10 апреля 2019

У вас есть посторонний SELECT * FROM connection to myuser; внутри EXECUTE.Код внутри EXECUTE передается непосредственно на сервер SQL, и ваш посторонний код недействителен.

Здесь исправлен сквозной пропуск SAS.Я бы посоветовал не использовать table как часть имени представления.Примечание. Вы увидите сообщение об ошибке, если ваши учетные данные SQL Server не имеют прав доступа к базе данных, необходимых для создания представления.

EXECUTE(
  CREATE VIEW DB.SCHEM.table AS
  SELECT * FROM DB.SCHEM.table2
) by myuser ;

Из Документы SQL Server для CREATE VIEW

CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]   
[ WITH <view_attribute> [ ,...n ] ]   
AS select_statement   
[ WITH CHECK OPTION ]   
[ ; ]  
...