CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

这个表名的变量该怎么写呢?

楼主mastersky(浪)2004-09-02 10:55:59 在 MS-SQL Server / 基础类 提问

create       PROCEDURE   usp_GetBillNo(  
                  @BillNo   varchar(20)   output,            
  @tablename   char(50),  
  @fieldname   VARCHAR(50),  
                  @billtype   char(1),  
                  @shop_id   char(2),  
                  @today   char(6))  
  AS  
   
  declare   @maxbillno   varchar(10)  
   
  SELECT   @maxbillno=max(substring(@fieldname,10,len(@fieldname)-9))    
        FROM   [@tablename]  
      where   substring(@fieldname,2,2)=@shop_id   and   substring(@fieldname,4,6)=@today  
   
  FROM   [@tablename]   可以通过,运行的时候说:对象名   '@tablename'   无效。  
  FROM   @tablename   不能通过  
   
  我要将表名作为参数,该如何写呢?  
  问题点数:20、回复次数:7Top

1 楼wanyingsong(豌豆)回复于 2004-09-02 10:58:01 得分 0

用动态语句,execTop

2 楼mastersky(浪)回复于 2004-09-02 10:59:18 得分 0

怎么写好呢Top

3 楼zjcxc(邹建)回复于 2004-09-02 11:02:57 得分 20

create       PROCEDURE   usp_GetBillNo(  
  @BillNo   varchar(20)   output,            
  @tablename   char(50),  
  @fieldname   VARCHAR(50),  
  @billtype   char(1),  
  @shop_id   char(2),  
  @today   char(6))  
  AS  
  declare   @s   nvarchar(4000) --注意类型  
   
  declare   @maxbillno   varchar(10)  
  set   @s='  
  SELECT   @maxbillno=max(substring(['+@fieldname+'],10,len(['+@fieldname+'])-9))    
  FROM   ['+@tablename+']  
  where   substring(['+@fieldname+'],2,2)=@shop_id   and   substring(['+@fieldname+'],4,6)=@today'  
  exec   sp_executesql   @s  
  ,N'@billtype   char(1),  
  @shop_id   char(2),  
  @today   char(6)),  
  @maxbillno   varchar(10)   out'  
  ,@billtype,@shop_id,@today,@maxbillno   out  
  set   @BillNo=@maxbillno     --应该还要返回结果吧?  
   
  Top

4 楼popmailzjw(什麼都不會)回复于 2004-09-02 11:07:58 得分 0

表名是不能作为参数直接在SQL中出现的,只用能EXEC执行字符串语句时在字符串中加入表名Top

5 楼yown(yong)回复于 2004-09-02 11:14:56 得分 0

你看看   sp_executesql   ,当然没问题的喽Top

6 楼mastersky(浪)回复于 2004-09-02 11:29:18 得分 0

搞定了,全过程是这样的。谢谢各位了  
   
  SET   QUOTED_IDENTIFIER   ON    
  GO  
  SET   ANSI_NULLS   ON    
  GO  
   
  if   Exists   (Select   name   From   sysobjects    
        WHERE   name   =   'usp_GetBillNo'   AND   type   =   'P')    
  drop   proc   usp_GetBillNo  
   
  GO  
  create       PROCEDURE   usp_GetBillNo(  
                  @BillNo   varchar(20)   output,            
  @tablename   char(50),  
  @fieldname   VARCHAR(50),  
                  @billtype   char(1),  
                  @shop_id   char(2),  
                  @today   char(6))  
  AS  
  declare   @s   nvarchar(4000)  
   
  declare   @maxbillno   varchar(10)  
   
  set   @s='  
  SELECT   @maxbillno=max(substring(['+@fieldname+'],10,len(['+@fieldname+'])-9))    
  FROM   ['+@tablename+']  
  where   substring(['+@fieldname+'],2,2)=@shop_id   and   substring(['+@fieldname+'],4,6)=@today'  
  exec   sp_executesql   @s  
  ,N'@maxbillno   varchar(10)   out,  
  @shop_id   char(2),  
  @today   char(6)'  
  ,@maxbillno   out,@shop_id,@today  
   
  if   @maxbillno=''  
  begin  
      set   @maxbillno='1'  
  end  
  else   begin  
      set   @maxbillno=convert(char(10),convert(int,@maxbillno)+1)  
  end  
  if   Len(@maxbillno)=1    
      set   @maxbillno='000'+@maxbillno  
  else   if   Len(@maxbillno)=2    
      set   @maxbillno='00'+@maxbillno  
  else   if   Len(@maxbillno)=3    
      set   @maxbillno='0'+@maxbillno  
   
  set   @billno=@billtype+@shop_id+@today+@maxbillno  
   
  print   @billno  
   
  GO  
  SET   QUOTED_IDENTIFIER   OFF    
  GO  
  SET   ANSI_NULLS   ON    
  GO  
   
  Top

7 楼mastersky(浪)回复于 2004-09-02 11:33:26 得分 0

我给了:   zjcxc(邹建)   20分,怎么看不到得分?Top

相关问题

  • 怎么用变量去表示变量
  • 变量中带变量怎么写?
  • 要删除的表名为变量,该怎么写?
  • 表名为变量的存储过程怎么写?
  • 返回值为表变量的自定义函数怎么写?
  • js小问题,怎么用变量来表示变量名
  • 报表中怎么加入变量??
  • 动态表变量 怎么取得?????
  • 写存储过程时insert table表名是个变量该怎么写?
  • 用变量代替表的名字,应该怎么写?在线等。。。。

关键词

  • maxbillno
  • fieldname
  • billno
  • getbillno
  • billtype
  • usp
  • asdeclare
  • tablename
  • today
  • varchar

得分解答快速导航

  • 帖主:mastersky
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

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