很急,快吐血了!怎样动态建一个Sql表,要求表名有规律,高分请进!!!

yiyu 2000-08-15 08:04:00
功能:比如我库里面原有表 table 我想生成一个新表table2、table3,…… 如此有规律所以我想把表名当成参数传给存储过程,可这样问题就来了,好象在Select 语句中表名不能用参数代替(问题关键)请看下面。

我想用存储过程如下:
creat proc NewTable @tablename varchar(20)
as
select * Into @tablenae from SourceName
可是@tablename 不能通过语法检测,怎样把@tablename的值替换出来。

在ASP中是用'&'符号可替换出字符变量的值在SQL中是怎样实现的呢?或者有没有更好的方法实现呢?请各帮帮忙,很急!!!
...全文
489 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntout 2000-08-15
  • 打赏
  • 举报
回复
create proc NewTable @tablename varchar(20)
as
exec("select * Into" + @tablename + "from SourceName")
pjy 2000-08-15
  • 打赏
  • 举报
回复
使用exec(string)得语法!
将你得存储过程得SQL语句作为一个STRING字符串传进EXEC()中执行!
yiyu 2000-08-15
  • 打赏
  • 举报
回复
opkj大侠能不能请明示,我找不到这个属性,因为我手头上参考资料很少。
opkj 2000-08-15
  • 打赏
  • 举报
回复
非也非也,这是治标不治本的办法,自己去想一想如何告诉Delphi本存储进程不返回结果集。
yiyu 2000-08-15
  • 打赏
  • 举报
回复
谢谢你OPKJ,经你指点,问题解决。因我刚开始学Delphi,对数据库应用方面不是很了解.
我在存储过程最后加入一条 select 语句后问题得以解决真是太高兴了。
opkj 2000-08-15
  • 打赏
  • 举报
回复
Delphi一般会认为存储过程要返回结果集的,相信如果你在最后一行写个select不会出现问题。
yiyu 2000-08-15
  • 打赏
  • 举报
回复
pjy,huntout,谢谢你们,你们的方法是可行的但是我用的是Delphi中的 Storedproc 存储过程来执行的时候会出现 "Error Creating cursor handle"错,可是它会在SQL SERVER 中新建一个表新建完成后就会出现上面的错请问怎么解决。你也用DELPHI吗?
我用的存储过程是:
CREATE PROCEDURE newtable @table1 varchar(20)=new
AS
set nocount on
declare @mysql varchar(100)
select @mysql="select * into "+@table1+" from titles"
exec(@mysql)
在delphi中执行完后在 pubs 库中会多一个new表可是在Delphi中会给出上面的错误信息。请问这又怎样解决?我的存储过程有错吗?
opkj 2000-08-15
  • 打赏
  • 举报
回复
使用DBMS_SQL包,实现动态SQL, 详情参阅《Oracle8 PL/SQL程序设计》
shylsz 2000-08-15
  • 打赏
  • 举报
回复
另建一个表,存储表名

34,587

社区成员

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

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