设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
存储过程变量空间问题
返回列表
发新帖
存储过程变量空间问题
[复制链接]
11
|
4
|
2005-7-16 18:49:11
|
显示全部楼层
|
阅读模式
在写存储过程的时候一直被一个问题困扰,那就是存储过程变量空间问题。例如,在存储过程中执行SQL语句有两种方法,一种是直接执行,例如“SELECT * FROM TABLE1”,另外一种是将SQL语句赋值到字符串变量,然后调用EXEC()函数。例如 SELECT @chvSQL = 'SELECT * FROM TABLE1' 然后执行 EXEC(@chvSQL) .
问题出在字符串中变量与存储过程变量不在同一空间中不能相互访问。例如,我想动态创建一个临时表,临时表的各列事先并不明确,而是动态生成的。我原来的作法是:
SELECT @chvSQL = 'SELECT COL1,COL2 INTO #MYTEMP FROM TABLE1'
SELECT * FROM #MYTEMP
但是由于变量空间不同的原因,在执行“SELECT * FROM #MYTEMP”时提示#MYTEMP对象不存在。我现在的解决方法是:
CREATE TABLE #MYTEMP(TEMPID INT),然后动态增加临时表的列,感觉十分繁琐,出错的可能性也较大。所以请教各位,是否有更好的方法。
另外一个同样的问题是,SQL语句中的WHERE部分是动态生成的,保存在一个字符串变量中,导致只能以执行字符串的方式执行SQL语句。这样SQL语句的执行结果只能以临时表的方式传递,若是一个结果集,还好说。有的时候就是一个统计值也需要建立一个临时表传递,非常麻烦,不知各位高手有无更好的解决方法。
在这里多谢了。
回复
使用道具
举报
千问
|
2005-7-16 18:49:11
|
显示全部楼层
是的﹐這個問題一般我是這樣處理的。
declare @sql varchar(7999)
select @sql='declare @a int,@b int select @a=2,@b=3 select @a,@b'
exec(@sql)
這種方案就是全部動態處理。
另一種和你差不多﹐使用臨時表
create table #tmp(a int,b int)
declare @sql varchar(7999)
select @sql='select 1,2'
insert into #tmp exec(@sql)
select * from #tmp
drop table #tmp
回复
使用道具
举报
千问
|
2005-7-16 18:49:11
|
显示全部楼层
我不知道你所说的同一空间是什么概念,在sqlserver中据我所知只能定义局部变量,象临时表和@都是,在前台开发工具里倒可以定义全局变量。
对于动态处理,除了xzh2000兄所说的exec(),insert...exec生成临时表外,还有动态游标和sp_executesql可以选择。实际上在procedure中还常套用procedure来进行一些复杂的处理。
回复
使用道具
举报
千问
|
2005-7-16 18:49:11
|
显示全部楼层
感谢两位斑竹的精彩回答,没有想到我的问题这么快就有回复,正是出乎我的意料,希望ITPUB越办越好!
所谓同一空间指的是变量空间。变量所位于的变量空间不同,就无法相互访问。
在SQL里,字符串的变量空间与其所存在的存储过程空间是不同的。
例如,我用EXEC('CREATE TABLE#mytemp(COLA INT,COLB INT)')创建一个临时表,是无法在存储过程中使用的。即,若我用SELECT * FROM # mytemp 会提示# mytemp对象不存在。
同样的问题,为了减少逐列判断类型的麻烦,我想用SELECT...INTO语句动态的生成临时表。若用EXEC()方法,就存在我所说的字符串空间与存储过程空间不一致,用sp_executesql好像是个办法,等下我回去试试。
回复
使用道具
举报
千问
|
2005-7-16 18:49:11
|
显示全部楼层
我明白你意思了。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
不做俗人,哪儿会知道这般乐趣?家破人亡,平了头每日荷锄,却自
2
4745G 电池管理软件在哪啊??
3
你敢结婚吗?婆家叫你家破人亡,身败名裂那种#张恒# @郑爽S
4
关于宏碁电脑包的一些问题
5
为什么5950G一点消息都没有啊 ?
6
为什么4820TG打开网页时,某些页面会闪抖?
7
在安装完自带的W7系统后,还能分区吗?
8
疑问:5820tg最新的显卡驱动在哪里下载?
9
求助:压缩文化打不开,错误,这个压缩文件格式未知或者数据已经被损坏
10
3820几个问题咨询,内存、cpu都在大量使用,没运行啥程序啊,怎么回事?
11
LP要生了 好紧张 求祝福 谢谢拉
12
xp系统装好后再装WIN7怎么都装不上啊
13
acer 4741g 为什么网网玩NBA2K11卡屏呀?????
14
给孩子一个什么样的平台
15
win764位系统用什么虚拟光驱
16
不得不说yg每次拍MV都挺舍得花钱下血本的 ?
17
夏天喝什么清火 排毒啊?
18
我用adds分区后启动不了了,怎么办啊??
19
有个网上卖菜的APP在我们小区附近是真下血本,不知道请了多少
20
弱弱的问一下,4820有蓝牙吗?
21
4330求助!!
22
[婴儿]婴儿要是被保姆虐待怎么办?大家都放心请来的保姆照看孩子吗?
23
重装系统后,屏幕亮度调节的显示没有了,有没有人知道怎么整出来
24
求助高人 4741本本如何恢复到出厂状态?
25
cpu升级问题aspire 3100系列
26
准妈妈注意如何识别激素水果?
27
我们的祖国你到底怎么了?
28
问几个ao522的软件问题
29
我的AS4551G散热太差了,怎么办。求高手指教。
30
宏基4741G碎片整理(已解决)
31
ALT+F10 还原系统 是直接带驱动的吗
32
100°的帖子 100度的手提。还能用多久?
33
我装的xp,开机就出现pci device无法安装,求解
34
5950G什么时候上市?
35
孩子满月喝什么酒好
36
发布了头条文章:《20年前,牛群为什么就算妻离子散,也要离开
37
TM5530G 701G12C升级硬盘内存, 各位大神,小弟发个请教贴
38
多美滋奶粉有问题吗
39
求助jms
40
522能玩CF吗
41
1501,640,6400用的是同一副模具吗
42
求购Sony/索尼SGPT121 SGPT122 SGPT132 平板电脑USB数据线线
43
“真相从来不让人悲伤,它让人恐惧、战栗。” ?
44
#go猫粮被曝猫吃后中毒甚至死亡#生命怎么可以这样践踏,不管
45
收购类似蜂鸟S3的机器,价格2000内,有别的可以提议!!
46
#你知道吗#暗网的真相究竟是什么?为什么有人想上暗网! L未
47
为何不母乳喂养孩子?(转载)
48
#敦煌阳关未发现林地大面积减少#评论区不出意外的又是这类声音
49
求购一张 蓝天 7970m clevo 7970M
50
请教667内存怎么显示533.
51
有来自广东的预产期2011年3月份的准妈妈吗?
52
使用vista疑问
53
请问我能升级内存吗
54
内存的兼容性问题
55
我的创新软声卡安装成功了么?(上图)(谁帮解决啊)
56
报错代码: OVC004D401 怎么回事呀?
57
说实话,我从来都没有怀疑过你的真心。我记得你为我坐十几个小时
58
康维多营养师温馨提示:孕期营养影响宝宝健康
59
回复那些说DELL如何如何的人
60
640m电池问题 ?
61
我们要找的不该是那个理想中懂你的人,如真有那样一个人,怎么保
62
昨天匯的款,不知道到底怎麼樣?
63
1501用什么版本得XP比较好
64
问题重提
65
#被家暴男砍杀女子生前经历了什么#呵呵,都家暴多次了,法院竟
66
汇款收费?
67
谁知道,在深圳有没有戴尔体验中心???
68
大家买dell都是怎么买的啊?官网么?经销商?现在犹豫中……
69
连着两天梦到被人追杀了我到底干了什么伤天害理的事情 ?
70
我每天不管发什么,发不发,都会掉十几个粉,我寻思着我最近也没
71
买DELL可以到银行用信用卡吗付款吗??
72
为何我的512M内存不够呀?
73
[幼儿]关税要涨了,货源紧张,进口奶粉还好买吗?
74
一个一个偶像都不外如此,沉迷过的偶像一个个消失,谁曾伤天害理
75
求救阿
76
6699的那款没有了???
77
有最新的优惠券吗?
78
但是据我所知那些色情的男的命也不会太长。很多很早就死了。可能
79
[婴儿]急 请教有经验或懂医的 宝宝咳嗽
80
求助!我的640M为什么很多游戏都不能玩儿?
81
婴幼儿奶粉不导致性早熟?(转载)
82
I8kfanGUI无法显示硬盘温度?
83
求助!宽屏打游戏被拉长了!
84
亲,您的笔记本硬盘还好吗?
85
求解4750G一键还原
86
2g的DDR3 1066 MHz笔记本内存 与2g的DDR3 1333 MHz笔记本内存可以一起用吗
87
DNF玩不了了,求助…进游戏几分钟后就毫无征兆的掉线,之后提示:连接失败…错误代码1
88
新入手4752G 拆开发现内存条是金士顿
89
【4752g】小白请教各路大侠,无发票,也无商家公章,售后给维修吗?
90
准备从装系统了,最后的问题!希望有经验的朋友们给与解答!
91
用HD检查会显示C5显示有3扇区个未映射,提示警告,什么原因?
92
那位大神进来看一下,系统问题!
93
隐藏盘上了盘符,怎么恢复隐藏?
94
关于笔记本风扇吵问题
95
急求!3750G正版系统带的三张原装壁纸
96
间歇性发奋图强持续性不学无术 ?
97
求助大家,关于本本系统还原的问题。
98
一天天不学无术,啥样的猫啊跟你俩似的又懒又馋!!! ?
99
AS4752G23302G50MNKK大概价位在多少?
100
大家刚买来的5750电池损耗是多少?