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

存储过程能直接用自己写的函数吗?

楼主ppdty()2005-08-01 14:42:00 在 MS-SQL Server / 基础类 提问

我存储过程里有这样一句  
  exec   ('update   '+@finnalTemp+'   set   ModelNO   =   (Select   '+@i+'='+@i+'+'',''+RTRIM(ModelNO)   from   (select   distinct   PartNO,ModelNO   from   '+@temp5+')   as   thisTemp   Where   thisTemp.PartNO   =   '+@temp5+'.PartNO   Order   By   ModelNO)')  
  我想把几个ModelNO中间加上“,”。不能用自定义函数,因为表名是个变量。  
  我想这样直接在存储过程里实现,但是不对,各位帮我看看,能直接在存储过程里实现吗?  
  谢谢 问题点数:20、回复次数:11Top

1 楼ppdty()回复于 2005-08-01 15:09:10 得分 0

没人回帖?  
  不够分再加啊Top

2 楼jensgn(风儿.Net)回复于 2005-08-01 15:22:07 得分 0

可以用,dbo.函数名Top

3 楼ppdty()回复于 2005-08-01 15:24:49 得分 0

不行啊,因为我的源表是变量,在函数里表名不能是变量的,所以不能在行数里做啊,各位帮我看看啊,就按照这样的格式(在存储过程里)怎么实现这个功能啊  
  谢谢了Top

4 楼gimy007(逮猫的耗子)回复于 2005-08-01 15:25:17 得分 0

这  
  ModelNO   =   (Select   '+@i+'='+@i+'+'',''+RTRIM(ModelNO)   from  
   
  可能有问题,没看明白Top

5 楼ppdty()回复于 2005-08-01 15:31:51 得分 0

(Select   '+@i+'='+@i+'+'',''+RTRIM(ModelNO)   from   (select   distinct   PartNO,ModelNO   from   '+@temp5+')   as   thisTemp   Where   thisTemp.PartNO   =   '+@temp5+'.PartNO   Order   By   ModelNO)  
  后面那句话就是根据PartNO   找到相应的ModelNO,因为ModelNO可能有多个,所以把他们合并起来,中间加上“,”  
  这个我在字定义函数里已经实现了。但问题是现在表名@temp5是变量,不能在函数里做,所以想各位帮帮忙,看能否在存储过程里实现Top

6 楼gimy007(逮猫的耗子)回复于 2005-08-01 15:34:20 得分 0

如果假定你的SQL没问题的话;  
   
  declare   @s   varchar(8000)  
  set   @s='update   '+@finnalTemp+'   set   ModelNO   =   (Select   '+@i+'='+@i+'+'',''+RTRIM(ModelNO)   from   (select   distinct   PartNO,ModelNO   from   '+@temp5+')   as   thisTemp   Where   thisTemp.PartNO   =   '+@temp5+'.PartNO   Order   By   ModelNO)'  
   
  execute(@s)  
   
  这样应该是可以执行的Top

7 楼ppdty()回复于 2005-08-01 16:03:13 得分 0

'update   ##finnalTemp_67   set   ModelNO   =   (Select   =+','+RTRIM(ModelNO)   from   (select   distinct   PartNO,ModelNO   from   ##temp5_67)   as   thisTemp   Where   thisTemp.PartNO   =   ##temp5_67.PartNO   Order   By   ModelNO)'  
   
  不行啊  
  按你说的我跟踪出来是上面这样的。  
  Select   转变的确有问题,下不去的啊  
  再帮我看看啊,谢谢Top

8 楼ppdty()回复于 2005-08-01 16:08:24 得分 0

哦,对了,我  
  set   @i=''  
  是不是这里的问题啊  
  那我的i应该怎么设啊?  
  我最后想得到的是比如  
  ModelNO1,ModelNO2,ModelNO3这样的Top

9 楼ppdty()回复于 2005-08-01 17:09:53 得分 0

不对不对不对啊,我@i='i'的时候,他提示Invalid   column   name   'i'.  
  怎么办啊,再帮我看看啊Top

10 楼gimy007(逮猫的耗子)回复于 2005-08-02 08:20:03 得分 0

这样吧:你把  
  Select   '+@i+'='+@i+'+'',''+RTRIM(ModelNO)   from   (select   distinct   PartNO,ModelNO   from   '+@temp5+')   as   thisTemp   Where   thisTemp.PartNO   =   '+@temp5+'.PartNO   Order   By   ModelNO  
   
  这句用实际的参数代替一下,看看结果是什么;其实我主要是担心set   ModelNO   =   [一推的查询结果];这好象就不行了Top

11 楼talantlee(小李小刀(daggerfly))回复于 2005-08-02 08:53:06 得分 0

exec   ('update   '+@finnalTemp+'   set   ModelNO   =     -----這裡應該是   in而不是等於  
   
   
  樓主可以建立一個函數它的返回類型是   字符串   例如   'a,b,c,'  
  這樣應該能實現你的要求的  
   
  Top

相关问题

  • 这样的存储过程/函数怎么写?
  • --求一转数字转换成大写金额的存储过程或函数!
  • ORACLE 存储过程中count(ColumName)函数?
  • 悬赏存储过程或函数
  • 存储过程中的函数问题.
  • 存储过程与直接写sql语句的区别
  • 是用存储过程还是直接在adoquery.sql.add中写代码?
  • 如何直接调用存储过程或DLL中的函数生成SQL脚本?
  • 存储过程怎么写?
  • 存储过程怎么写??

关键词

  • 函数
  • 存储过程
  • modelno
  • partno
  • thistemp
  • finnaltemp
  • 变量
  • temp5
  • rtrim
  • distinct

得分解答快速导航

  • 帖主:ppdty

相关链接

  • SQL Server类图书

广告也精彩

反馈

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