CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

大家帮我看看,触发器问题,怎么在触发器中查寻返回数据?

楼主xbbtzhao(agre)2006-11-01 08:09:36 在 Delphi / 数据库相关 提问

CREATE   TRIGGER   [test1]   ON   dbo.UserData    
  AFTER   INSERT  
  AS  
  DECLARE   @USbm             nvarchar  
  DECLARE     @USname           nvarchar  
  DECLARE     @FAid           int  
  DECLARE     @usid           int  
  IF   @@ROWCOUNT   >0  
  BEGIN  
      SELECT   @USname=USname,@USbm=USbm,@USid=USid   FROM   Inserted  
      select   @FAid=Autoid   from   organize   where   Cname=@USbm  
      insert   into   Organize(Cname,FatherId,USid)values(@USname,@FAid,@USid)  
  end  
   
   
  select   @FAid=Autoid   from   organize   where   Cname=@USbm  
  @FAid还是为空,不知怎么取得查寻记录的数据? 问题点数:20、回复次数:5Top

1 楼StarRains(星雨)回复于 2006-11-01 10:16:42 得分 5

Cname   字段类型是Nvarchar?  
  把@USbm   print出来,看看是什么Top

2 楼xbbtzhao(agre)回复于 2006-11-01 14:54:21 得分 0

问题出来了,insert   into   UserData(USid,USname,USbm)values(10099,'哪个','人事部')  
  @USbm本为'人事部',为什么  
  SELECT   @USname=USname,@USbm=USbm,@USid=USid   FROM   Inserted  
  @USbm只取得一个'人',为什么呢?Top

3 楼StarRains(星雨)回复于 2006-11-01 16:11:56 得分 10

nvarchar(n)类型的定义要指定长度,如果没有在数据定义或变量声明语句中指定   n,则默认长度为   1。   所以只会取到第一个字符。  
  修改@USbm   和@USname   为  
  DECLARE   @USbm   nvarchar(50)  
  DECLARE   @USname   nvarchar(50)  
  应该就可以了Top

4 楼liangpei2008(笑青天)回复于 2006-11-01 18:22:11 得分 5

没有符合条件的记录嘛!所以为空了!  
  按楼上的方法做一下!Top

5 楼xbbtzhao(agre)回复于 2006-11-02 08:05:00 得分 0

问题已解决:多谢  
        DECLARE   @USbm   nvarchar(50)  
        DECLARE   @USname   nvarchar(50)Top

相关问题

关键词

得分解答快速导航

  • 帖主:xbbtzhao
  • StarRains
  • StarRains
  • liangpei2008

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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