SQL Server7.0怪疑问题

pennate 2000-07-14 02:01:00
本人编写如下存储过程
create proc sp_ex1
@sour_db varchar(30) /*database name*/
as
declare @area_code varchar(30)
exec('select @area_code=area from '+@sour_db+'.dbo.cor_table')
在Query analizer 中通过给变量@sour_db 赋值能够返回执行结果
用sp_ex1 'data_db'执行则总是认为没有定义变量@area
经过反复试验,好象select后不能出现变量,不知是否正确?
请各位高手帮我会诊一下,不胜感激!
...全文
161 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LaoZheng 2000-07-17
  • 打赏
  • 举报
回复
用leslielu的方法
tanghuan 2000-07-17
  • 打赏
  • 举报
回复
exec('select @area_code=area from '+@sour_db+'.dbo.cor_table')
这句实际上是有开始了一个动态存储过程,其存储过程的程序就是
'select @area_code=area from '+@sour_db+'.dbo.cor_table'的值
在这语句中没有定义@area_code
exec('declare @area_code varchar(30) select @area_code=area from '+@sour_db+'.dbo.cor_table') 就不会报错

存储过程可以返回结果集
试试下面
create proc sp_ex1
@sour_db varchar(30) /*database name*/
as
declare @area_code varchar(30)
create table #temp (area_code varchar(30))
insert into #temp
exec('select area from '+@sour_db+'.dbo.cor_table')
select @area_code=area_code
from #temp
...

leslielu 2000-07-14
  • 打赏
  • 举报
回复
你可以使用
exec('Use '+ @sourdb)
再使用
select @area_code=area from dbo.cor_table
没问题的。

iven 2000-07-14
  • 打赏
  • 举报
回复
create proc sp_ex1
@sour_db varchar(30) /*database name*/
as
declare @area_code varchar(30)
exec('select @area_code=area from '+@sour_db+'.dbo.cor_table')

'...'中的语句,SQL Server 当成字符串
正确的写法是
delcare @chvSql varchar(200)
@chvSql='select '+@area_code+'=area from'+@sour_db+'.dbo.cor_table'
exec (chvSql)
xinyue 2000-07-14
  • 打赏
  • 举报
回复
select语句有错误吧

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧