gpt4 book ai didi

sql - 如何在 SQL Server 查询游标上绑定(bind)参数

转载 作者:搜寻专家 更新时间:2023-10-30 23:28:17 24 4
gpt4 key购买 nike

甲骨文:

STR_SQL := ' SELECT ... where x = :1 and y = :2';
OPEN RS FOR STR_SQL USING VAR1, VAR2;

Postgres:

STR_SQL := ' SELECT ... where x = $1 and y = $2';
OPEN RS FOR EXECUTE STR_SQL USING VAR1, VAR2;

我如何在 SQL Server 中执行此操作?我只想避免多个执行计划

编辑:

在带有 @ 的查询中使用变量是否会保留执行计划?

SET @RS  = CURSOR FOR SELECT ... where x = @MY_PROC_PARAMETER 
OPEN @RS;
FETCH NEXT FROM @RS INTO @VRESULT_VALUE;

最佳答案

游标在 SQL Server 或任何与此相关的循环中表现不佳,因此我会避免使用它们。在 SQL Server 中将参数绑定(bind)到动态 SQL 的等效项是 sp_executesql .您也可以构建一个连接的查询字符串并执行它:

declare @x int = 1
declare @y int = 2
declare @sql varchar(max) = 'select * from table where x = ' + cast(@x as varchar) + ' and y = ' + cast(@y as varchar)
print @sql
--exec @sql

需要对日期、数字和其他数据类型进行强制转换,以将 + 视为连接而不是算术。

但是,如果您真的只想为您的查询制定一个新的执行计划,您可以添加查询提示 OPTION(RECOMPILE) .这样做通常没有必要。如果您的计划不好,您应该调查为什么您会得到这些。即统计、参数嗅探等。

关于sql - 如何在 SQL Server 查询游标上绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53303579/

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