Я пытаюсь передать переменную в ЗЕЬЕСТ в OPENROWSET, но я получаю сообщение об ошибкеSQL SELECT * FROM OPENROWSET с переменной
DECLARE @dDateTIME DATE
SET @dDateTIME = (SELECT SalesDate FROM dbo.SalesDate)
INSERT INTO dbo.tblSales
SELECT * FROM OPENROWSET('MSDASQL', 'dsn=mydsn;uid=myid;pwd=mypwd;',
'SELECT
ID,
TranDate,
ProductID,
CostValue,
SalesValue,
QtySold,
FROM tblSales WHERE TranDate='' + @dDateTIME + ''')
DECLARE @dDateTIME DATE
SET @dDateTIME = (SELECT SalesDate FROM dbo.SalesDate)
DECLARE @SQL NVARCHAR(1024) =
'SELECT
ID,
TranDate,
ProductID,
CostValue,
SalesValue,
QtySold,
FROM tblSales WHERE TranDate=''' + CAST(@dDateTIME AS VARCHAR(64)) + ''''
DECLARE @RunSQL NVARCHAR(max)
SET @RunSQL=
'SELECT * FROM OPENROWSET (''MSDASQL'', ''dsn=mydsn;uid=myid;pwd=mypwd;'',''EXEC @SQL'')'`
Что синтаксис этого я использую, чтобы применить к @SQL
?
Ошибки я получаю:
Ошибка: OLE DB провайдер "MSDASQL" для связанного сервера "(нуль)" возвращается сообщение «[Pervasive] [ODBC Client Interface] [LNA] [распространяющийся ] [ODBC интерфейс двигателя] Ошибка в предикате: Trandate = '(SELECT @dDateTIME) "
*** ЧТО *** это ошибка, которую вы получаете!?!?!?!?!? Мы не можем читать ваш экран - ни ваш разум ... вам нужно будет ** рассказать нам ... .... и пока вы на нем - пожалуйста, также сообщите нам, какая база данных * ** вы используете (и какую версию); SQL - это просто язык запроса - не продукт базы данных .... –
База данных, которую я использую, - SQL Server 2008 r2 База данных, к которой подключен dsn, является Pervasive Я знаю, что ошибка вызвана синтаксисом, который я использую при передаче вариации. Если я ввожу значение datevalue в оператор WHERE, он работает нормально. Ошибка: поставщик OLE DB «MSDASQL» для связанного сервера »(null)« возвращенное сообщение »[Pervasive] [Клиентский интерфейс ODBC] [LNA] [Pervasive] [Интерфейс двигателя ODBC] Ошибка в предикате: TranDate = '(SELECT @dDATETIME). – user2393602