gpt4 book ai didi

sql-server - 如何将参数值传递给 T-SQL 查询

转载 作者:行者123 更新时间:2023-12-02 17:21:30 25 4
gpt4 key购买 nike

我在 SQL Server 2005 (Management Studio IDE) 中使用以下 T-SQL 查询:

DECLARE @id int;
DECLARE @countVal int;
DECLARE @sql nvarchar(max);
SET @id = 1000;
SET @sql = 'SELECT COUNT(*) FROM owner.myTable WHERE id = @id';
EXEC (@sql) AT oracleServer -- oracleServer is a lined server to Oracle

我不知道如何将输入参数@id传递给EXEC查询,并将计数结果传递给@countVal。我看到了一些 Microsoft SQL 服务器的示例,例如:

EXEC (@sql, @id = @id)

我在 Oracle 上尝试过此操作,但出现语句错误:

OLE DB provider "OraOLEDB.Oracle" for linked server "oracleServer" 
returned message "ORA-00936: missing expression"

最佳答案

试试这个:

EXEC sp_executesql @sql, N'@id int', @id

更多信息请参阅这篇精彩文章:http://www.sommarskog.se/dynamic_sql.html

<小时/>

至于输出,您的 SELECT 需要如下所示:

SELECT @countVal = COUNT(id) FROM owner.myTable WHERE id = @id

我选择“id”而不是“*”以避免提取不必要的数据...

那么你的动态sql应该是这样的:

EXEC sp_executesql @sql, 
N'@id int, @countVal int OUTPUT',
@id,
@countVal OUTPUT

此示例改编自上面链接的同一篇文章,在 sp_executesql 部分中.

<小时/>

对于 Oracle 错误,您需要找出 sp_executesql 发送到 Oracle 的确切 SQL。如果 Oracle 中有分析器或查询日志,这可能会有所帮助。我对 Oracle 的经验有限,但这将是解决您的问题的下一个合乎逻辑的步骤。

关于sql-server - 如何将参数值传递给 T-SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/593643/

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