先执行:
select top 10 * into #zz1 from ktran go create proc testpc2 as begin select * from #zz1 select top 10 * into #zz2 from kbrch end go drop table #zz1 go
后执行:
select top 10 * into #zz2 from kbrch go create proc testpc1 as begin select top 10 * into #zz1 from ktran exec testpc2 select * from #zz2 end go drop table #zz2 go
只有这样,才能正常创建两个过程,因sybase存储过程的特点,若里面所用到的表在过程创建时不存在,则会报错而无法继续,对临时表也一样。
testpc1过程中,创建临时表#zz1,然后调用testpc2过程,在testpc2中查询显示#zz1的内容,可见能够正常显示。而在testpc2中创建了临时表#zz2,待testpc1中调用完testpc2后查询#zz2表时,却显示无此对象。可以验证,父过程中的临时表对子过程可见可用,而子过程中的临时表在执行结束后释放,因而对父过程是不可见的。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/530.html