sql - SQL Server 游标需要在打开而不是声明时设置参数
问题描述
我有一个在 Sybase 上编写的旧程序,我需要将它迁移到 SQL Server。我面临的一个问题是,在 Sybase 中,我们通常使用变量来编写游标的声明。并且这个变量将在游标定义之后,但在打开游标之前设置。因此,当光标打开时,查询将基于声明后设置的这些变量的值。
示例游标CTSTRS_ACCDET
基于 trs_no。
select @AL_TRSNO=10
DECLARE CTSTRS_ACCDET CURSOR FOR
SELECT AC_BR,
AC_CY,
AC_GL,
AC_CIF,
AC_SL,
FC_AMOUNT
FROM CTSTRS_ACC_DET
WHERE
AND TRS_NO = @AL_TRSNO
FOR READ ONLY
select @AL_TRSNO=20
当光标打开时,我需要查询来检索 trx no 20 而不是 10。
解决方案
一个@table 变量或#temp 表来存储@AL_TRSNO 的值和从@table/#table 中选择的游标:
declare @o int;
declare @t table(val int);
set @o = 22;
insert into @t(val) values(@o);
declare c cursor dynamic for
select name, object_id
from sys.all_columns
where object_id = (select max(val) from @t);
open c;
fetch next from c;
close c;
set @o = 19;
delete from @t;
insert into @t(val) values(@o);
open c;
fetch next from c;
close c;
deallocate c;
推荐阅读
- html - 在css中链接后背景img不显示,但如果我将img添加到html则显示
- html - 响应式网页部分工作
- c++ - c ++:如何从子类访问基类中的私有私有属性
- docker - 文件存在于 docker run 卷中,但不存在于 docker-compose 卷中
- sql-server - 如何插入选择从变量开始的序列?
- python - 是否可以自定义与同一模板关联的各个页面?动态 URL django
- python - 将 .txt 文件转换为图像
- c# - 从最后一个条目中获取 id
- python-3.x - 从列表中添加两个数字并将输出分配给矩阵
- python - 为什么 strip() 不清除 python 中的所有空格?