CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

如何动态描述表名

楼主hljhl(jhl)2003-10-04 16:31:48 在 MS-SQL Server / 基础类 提问

表_dmbnote中的dmbname字段中存放了50多个代码表的表名,我想用如下的存储过程来建这些表的主键,(所有代码表的要建主键得列名都为code)  
   
  CREATE   PROCEDURE   usp_create_pk    
  AS  
  declare   @bm   varchar(7)  
  declare   cur_dmb   cursor   for   select   dmbname   from   _dmbnote  
  open   cur_dmb  
  fetch   cur_dmb   into   @bm  
  if   (@@fetch_status<>0)  
  begin  
  close   cyr_dmb  
  deallocate   cur_dmb  
  return  
  end  
  set   nocount   on  
  while   (@@fetch_status=0)  
  begin  
  alter   table   XXX   add   constraint   pk_code   primary   key   (code)  
                    ////////XXX应为@BM的内容,在此如何写(象VF中的宏代换‘&’)  
  fetch   next   into   @bm  
  end  
  close   cur_dmb  
  deallocate   cur_dmb  
  return 问题点数:50、回复次数:3Top

1 楼westbulls(westbulls)回复于 2003-10-04 16:36:33 得分 10

只写其中一段  
  declare   @sql   varchar(8000)  
  while   (@@fetch_status=0)  
  begin  
          select   @sql='alter   table   ['+@bm+']   add   constraint   pk_code   primary   key   (code)  
          exec(@sql)  
          fetch   next   into   @bm  
  endTop

2 楼pengdali()回复于 2003-10-04 16:36:36 得分 10

CREATE   PROCEDURE   usp_create_pk    
  AS  
  declare   @bm   varchar(7)  
  declare   cur_dmb   cursor   for   select   dmbname   from   _dmbnote  
  open   cur_dmb  
  fetch   cur_dmb   into   @bm  
  if   (@@fetch_status<>0)  
  begin  
  close   cyr_dmb  
  deallocate   cur_dmb  
  return  
  end  
  set   nocount   on  
  while   (@@fetch_status=0)  
  begin  
  exec('alter   table   '+@bm+'   add   constraint   pk_code   primary   key   (code)')  
  fetch   next   into   @bm  
  end  
  close   cur_dmb  
  deallocate   cur_dmb  
  return  
  Top

3 楼txlicenhe(马可)回复于 2003-10-04 16:42:48 得分 30

CREATE   PROCEDURE   usp_create_pk    
  AS  
  declare   @bm   varchar(7)  
  declare   cur_dmb   cursor   for   select   dmbname   from   _dmbnote  
  open   cur_dmb  
  fetch   cur_dmb   into   @bm  
  if   (@@fetch_status<>0)  
  begin  
  close   cyr_dmb  
  deallocate   cur_dmb  
  return  
  end  
  set   nocount   on  
  while   (@@fetch_status=0)  
  begin  
          exec('alter   table   '+@bm+'   add   constraint   pk_code_'+@bm+'   primary   key   (code)')  
  --(主键名也不能与其它表的主键名重复)  
  -- alter   table   XXX   add   constraint   pk_code   primary   key   (code)  
  fetch   next   into   @bm  
  end  
  close   cur_dmb  
  deallocate   cur_dmb  
  return  
  Top

相关问题

  • 如何在程序中动态描述页面的问题
  • 如何动态建表?
  • 如何做动态报表
  • 如何动态建表?
  • 如何做动态报表
  • 如何动态创建表?
  • 如何还原设备描述表
  • 如何理解设备描述表???
  • 动态dw源描述……
  • sql7难题,如何动态建表

关键词

  • code
  • dmbdeallocate
  • cur
  • dmb
  • 表
  • bm
  • fetch
  • asdeclare
  • bmendclose
  • bmif

得分解答快速导航

  • 帖主:hljhl
  • westbulls
  • pengdali
  • txlicenhe

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo