1、你的问题没有描述清楚,没有出错信息,或者你需要的结果,也没有表结构描述,一般要猜才能回答,好多人不愿意猜。
2、昨天和今天是周末,好多人休息。
3、有个明显的问题是:set dist=@dist dd=@dist-fl
   应该改为set dist=@dist,dd=@dist-fl
4、可能有问题的一句:
         where rank=@rank   and  workcode=@workcode and code=@code
   其中rank、workcode、code可能在多个表有字段,会出错。(这是猜的)

解决方案 »

  1.   

    扬风破浪,你好!
       不好意思,是这样:
      CREATE procedure test  @rank int, @workcode char(5),@code char(5),@dist numeric(12,5)
                       
    as
             update rim_ga
             set dist=@dist, dd=@dist-fl
             FROM   dbo.Rim_PT INNER JOIN
                    dbo.Hori_PT ON dbo.Rim_PT.spworkcode = dbo.Hori_PT.WorkCode AND 
                    dbo.Rim_PT.spcode = dbo.Hori_PT.Code INNER JOIN
                    dbo.Hori_PT Hori_PT_1 ON 
                    dbo.Rim_PT.epworkcode = Hori_PT_1.WorkCode INNER JOIN
                    dbo.rim_ga ON dbo.Rim_PT.WorkCode = dbo.rim_ga.workcode AND 
                    dbo.Rim_PT.Code = dbo.rim_ga.code
             where rim_ga.rank=@rank   and   rim_ga.workcode=@workcode and  rim_ga.code=@code
    GO    我的意思是:
             这个语句无语法错误,但是FROM多表我,要超纵的字段除FL属于HORI_PT外,其他的都是在rim_ga中的。关键的疑点:
                                      1。这样能否取得FL的值
                                      2。能否这样用在更新语句中用FROM来连接多表。这种结构:
                  UPDATE 某表
                   SET  某表的字段(但从其他的关联表中取值)
                    FROM 多表
                   WHRER 某表的字段
    谢谢!!
      

  2.   

    是可以的,但是有条件:
     1、保证一条rim_ga只取出一个FL,即你输入的连接条件保证rim_ga和HORI_PT表之间是一对一关系。最好是主键之间连接。
     2、在不敢肯定条件是否符合的情况下,你可以用:
        select rim_ga.*,Hori_PT_1.*
             FROM   dbo.Rim_PT INNER JOIN
                    dbo.Hori_PT ON dbo.Rim_PT.spworkcode = dbo.Hori_PT.WorkCode AND 
                    dbo.Rim_PT.spcode = dbo.Hori_PT.Code INNER JOIN
                    dbo.Hori_PT Hori_PT_1 ON 
                    dbo.Rim_PT.epworkcode = Hori_PT_1.WorkCode INNER JOIN
                    dbo.rim_ga ON dbo.Rim_PT.WorkCode = dbo.rim_ga.workcode AND 
                    dbo.Rim_PT.Code = dbo.rim_ga.code
             where rim_ga.rank=@rank   and   rim_ga.workcode=@workcode and  rim_ga.code=@code
    先查看你的条件是否写完全。
      

  3.   

    第一点保证了
      对于第二点:
           我想说的是:
               FROM 语句我是从视图中复制下来的,
              本来我写了一个视图取得连接表数据,但视图不能更新数据
             所以,我想能否在存储过程中将两步合起来,
        在存储过程中从连接表中取得当前值来更新要更新的表的字段
      

  4.   

    视图不能更新数据?!
    视图在SQL SERVER2000是可以通过INSTEAD OF 触发器更新数据,看以下精华贴。http://www.csdn.net/expert/topic/610/610567.xml?temp=.9792139
      

  5.   

    视图的格式一般是:
         select
         from
         where
       是把?
      

  6.   

    用INSTEAD OF 触发器可以自己定义修改哪些表的哪些字段。
      

  7.   

    最后问一下:
      update
      set 
      from
      where 可以吧?
      

  8.   

    以前学的理论好象是:
                     
      update
      set 
      where
      

  9.   

    update  
       set    
       from  
       where 
    是SQL SERVER 特有的,这样比较灵活!!