问个很菜的问题(用存储过程建表的问题)

Stone444 2003-09-19 01:12:34
存储过程中建的数据表
当存储过程执行完毕后不会保存吗?
我想在存储过程中建一系列表
但是每次执行后用查询语句查询时
总提示表名字无效。
谢谢
...全文
85 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-09-19
  • 打赏
  • 举报
回复
除非你创建的是临时表,否则是可以保存的.

例子:
create proc p_test
as
if not exists(select 1 from syscolumns where object_id('tb')=id
create table tb(id int)
go

--测试
exec p_test
select * from tb
giggsbj 2003-09-19
  • 打赏
  • 举报
回复
楼主的else是多余的。
giggsbj 2003-09-19
  • 打赏
  • 举报
回复
--存储过程中有问题,做如下修改
create proc proc_addtable
as
if exists(select * from sysobjects where id=object_id('newtable') and xtype='u')
begin
drop table newtable
end
create table newtable (i int,ii datetime)


select * from newtable
applexml 2003-09-19
  • 打赏
  • 举报
回复
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'proc_addtable') AND OBJECTPROPERTY(ID,N'ISprocedure') = 1)
DROP procedure proc_addtable

go
create proc proc_addtable
as
if exists(select * from sysobjects where id=object_id('newtable') AND OBJECTPROPERTY(ID,N'IsUserTable') = 1)
drop table newtable
else
create table newtable (i int,ii datetime)
select * from newtable
drop table newtable--增加这句话就可以了
go
exec proc_addtable

--如果不增加这句话的话,第一次执行是可以的,第二次就不成了,间隔性的成功

Stone444 2003-09-19
  • 打赏
  • 举报
回复
回: aierong(皑婀瑢-数据库XML.NET联盟会科长):
如你所写我执行了exec proc_addtable
但是查询分析器提示:
服务器: 消息 208,级别 16,状态 1,过程 proc_addtable,行 7
对象名 'newtable' 无效。

我自己也看了在该存储过程所属的数据库中找不到该表。
aierong 2003-09-19
  • 打赏
  • 举报
回复



create proc proc_addtable
as
if exists(select * from sysobjects where id=object_id('newtable') and xtype='u')
drop table newtable
else
create table newtable (i int,ii datetime)
select * from newtable


--run
exec proc_addtable

比尔咔咔 2003-09-19
  • 打赏
  • 举报
回复
SQL贴出来
要不看不明白

34,874

社区成员

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

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