gpt4 book ai didi

SQL SELECT * FROM OPENROWSET 带变量

转载 作者:行者123 更新时间:2023-12-02 06:16:52 28 4
gpt4 key购买 nike

我试图将变量传递到 OPENROWSET 中的 SELECT 语句中,但我不断收到错误

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

我得到的错误是:

The error is :OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Pervasive][ODBC Client Interface][LNA][Pervasive][ODBC Engine Interface]Error in predicate: TranDate = '(SELECT @dDateTIME)' "

最佳答案

您的变量未连接到字符串(其 '''' 关闭字符串)来纠正此问题(并执行必要的类型转换) :

DECLARE @SQL NVARCHAR(1024) = 
'SELECT
ID,
TranDate,
ProductID,
CostValue,
SalesValue,
QtySold,
FROM tblSales WHERE TranDate=''' + CAST(@dDateTIME AS VARCHAR(64)) + ''''

此外,您不能在 OPENROWSET 中使用表达式或变量,因此您需要通过 EXEC()/sp_executeSQL 调用它,看; Using a Variable in OPENROWSET Query

关于SQL SELECT * FROM OPENROWSET 带变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16607433/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com