Sybase IQ 的存储过程中的一些问题

博客主要讲述了Sybase存储过程优化相关问题。建立存储过程需好的编辑工具,否则IQ会过度优化,可将语句用begin..end包裹避免。同时,IQ对引号有特殊理解,开关quoted_identifier打开时,双引号内容被认作列名。还指出动态SQL有局限性,如不能在存储过程返回结果集,复杂SQL动态执行会报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在建立存储过程时,必须要有比较好的编辑工具,否则IQ会帮你把存储过程优化得面目全非:比如连续的赋值语句

select @a1 = 'a1'

select @a2 = 'a2'

select @a3 = a1 + a2

想想结果是'a1a2',但是它会帮你优化为select @a1 = 'a1' ,@a2 = 'a2',@a3 = a1 + a2  ,根据从右到左的原则最后的@a3 为空,见鬼吧!当然避免这种情况的方式是将每句话用begin .. end包起来,但是这绝对麻烦。

2.IQ对引号有自己的理解方式,当你将开关quoted_identifier打开时会发现用""包起来的它都认为是列名而不是字符串常量。所以一般引号中套引号只能是'asdasd''yh''sadasdasd'这种方式

动态sql的局限性:

    A.不能在存储过程中返回结果集,只能放在临时表中

    B.有些sql语句动态执行会报错(复杂的sql)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值