首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

数据库存储过程

发布网友

我来回答

1个回答

热心网友

exec(@sql)内生成的表,只在exec函数内部有效,在exec函数是不可见的

局部临时表只局限于创建进程以及创建进程的子进程
那么将存储过程看作是一个进程1,而exec(@sql)则是另一个进程2
根据我上面说的,#temp只会作用于创建它的进程2中
那么要想使#temp贯穿整个存储过程,则需要在存储过程中先用create table #temp来创建这个临时表,这样这个临时表的创建者就升级成了进程1,其他的无论进程2、进程3都是进程1的子进程,这样就都能引用到#temp,此时进程2中的语句就要改写成insert into而不是select into了
不过这个前提是你已知晓表结构,可以固定的创建临时表
否则你只能用exec(@sql)的形式将整个存储过程体都以拼接的方式执行
也就是不通过临时表,直接用exec(@sql)将查询结果输出

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com