create procedure [dbo].[论文个人得分] 
as 
begin 
declare @员工编号char(10) 
declare @score1 float 
declare @姓名char(50) 
declare @论文名称char(50) 
declare @分工char(10) 
declare @参加人数int 
declare @总分float 
set @姓名=(select 姓名from 教职员工,编写where 编写.员工编号=教职员工.员工编号and @员工编号= 编写.员工编号) 
set @论文名称=(select 论文名称from 论文,编写where 编写.论文编号=论文.论文编号and 编写.员工编号=@员工编号) 
set @分工=(select 分工from 编写,论文where 编写.论文编号=论文.论文编号and 编写. 员工编号=@员工编号) 
set @参加人数=(select 参加人数from 论文, 编写where 编写.论文编号=论文.论文编号and 编写.员工编号=@员工编号)
set @总分=(select 总分from 论文,编写where 编写.论文编号=论文.论文编号and 编写. 员工编号=@员工编号) 
begin 
if @参加人数=1 
set @score1=@总分
else if @参加人数=2 and @分工='主持人' 
set @score1 = @总分*0.7 
else if @参加人数=2 and @分工='参加人' 
set @score1 = @总分*0.3 
else if @参加人数=3 and @分工='主持人' 
set @score1 = @总分*0.6 
else if @参加人数=3 and @分工='参加人' 
set @score1 = @总分*0.3 
else if @参加人数=3 and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=4 and @分工='主持人' 
set @score1 = @总分*0.5 
else if @参加人数=4 and @分工='参加人' 
set @score1 = @总分*0.3 
else if @参加人数=4 and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=4 and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=5 and @分工='主持人' 
set @score1 = @总分*0.5 
else if @参加人数=5 and @分工='参加人' 
set @score1 = @总分*0.2 
else if @参加人数=5 and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=5 and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=5 and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=6 and @分工='主持人' 
set @score1 = @总分*0.5 
else if @参加人数=6 and @分工='参加人' 
set @score1 = @总分*0.2 
else if @参加人数=6and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=6 and @分工='参加人' 
set @score1 = @总分*0.1 
else if @参加人数=6 and @分工='参加人' 
set @score1 = @总分*0.05 
else if @参加人数=6 and @分工='参加人'
set @score1 = @总分*0.05 
end 
update 编写
declare @员工编号char(10)
set 得分=@score1 where 编写.员工编号=@员工编号
end 
print '职工号:'+@员工编号+'职工名:'+@姓名+'论文得分为:'+str(@score1)错误
消息 102,级别 15,状态 1,过程 论文个人得分,第 4 行
'(' 附近有语法错误。
消息 102,级别 15,状态 1,过程 论文个人得分,第 6 行
'(' 附近有语法错误。
消息 102,级别 15,状态 1,过程 论文个人得分,第 11 行a
'.' 附近有语法错误。
消息 102,级别 15,状态 1,过程 论文个人得分,第 12 行
'.' 附近有语法错误。
消息 102,级别 15,状态 1,过程 论文个人得分,第 13 行
'.' 附近有语法错误。
消息 102,级别 15,状态 1,过程 论文个人得分,第 14 行
'.' 附近有语法错误。
消息 102,级别 15,状态 1,过程 论文个人得分,第 15 行
'.' 附近有语法错误。
消息 137,级别 15,状态 2,过程 论文个人得分,第 17 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 18 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 19 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 20 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 21 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 22 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 23 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 24 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 25 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 26 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 27 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 28 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 29 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 30 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 31 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 32 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 33 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 34 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 35 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 36 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 37 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 38 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 39 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 40 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 41 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 42 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 43 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 44 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 45 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 46 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 47 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 48 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 49 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 50 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 51 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 52 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 53 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 54 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 55 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 56 行
必须声明标量变量 "@总分"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 57 行
必须声明标量变量 "@参加人数"。
消息 137,级别 15,状态 2,过程 论文个人得分,第 58 行
必须声明标量变量 "@总分"。
消息 156,级别 15,状态 1,过程 论文个人得分,第 61 行
关键字 'declare' 附近有语法错误。
消息 137,级别 15,状态 2,过程 论文个人得分,第 64 行
必须声明标量变量 "@员工编号"。

解决方案 »

  1.   

    叫你一个办法,双击错误信信息,光标会导航到错误的地方,我把你的sql复制到查询分析器里,就看到很多错
    --注意变量后面加个空格再写类型
    declare @员工编号 char(10)  
    declare @score1 float  
    declare @姓名 char(50)  
    declare @论文名称 char(50)  
    declare @分工 char(10)  
    declare @参加人数 int  
    declare @总分 float  
      

  2.   

    create procedure [dbo].[论文个人得分]  
    as  
    begin  
    declare @员工编号 char(10)  
    declare @score1 float  
    declare @姓名 char(50)  
    declare @论文名称 char(50)  
    declare @分工 char(10)  
    declare @参加人数 int  
    declare @总分 float  
    set @姓名=(select 姓名from 教职员工,编写 where 编写.员工编号=教职员工.员工编号 and @员工编号= 编写.员工编号)  
    set @论文名称=(select 论文名称from 论文,编写 where 编写.论文编号=论文.论文编号 and 编写.员工编号=@员工编号)  
    set @分工=(select 分工from 编写,论文 where 编写.论文编号=论文.论文编号 and 编写. 员工编号=@员工编号)  
    set @参加人数=(select 参加人数from 论文, 编写 where 编写.论文编号=论文.论文编号 and 编写.员工编号=@员工编号)
    set @总分=(select 总分from 论文,编写 where 编写.论文编号=论文.论文编号 and 编写. 员工编号=@员工编号)  
    begin  
    if @参加人数=1  
    set @score1=@总分
    else if @参加人数=2 and @分工='主持人'  
    set @score1 = @总分*0.7  
    else if @参加人数=2 and @分工='参加人'  
    set @score1 = @总分*0.3  
    else if @参加人数=3 and @分工='主持人'  
    set @score1 = @总分*0.6  
    else if @参加人数=3 and @分工='参加人'  
    set @score1 = @总分*0.3  
    else if @参加人数=3 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=4 and @分工='主持人'  
    set @score1 = @总分*0.5  
    else if @参加人数=4 and @分工='参加人'  
    set @score1 = @总分*0.3  
    else if @参加人数=4 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=4 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=5 and @分工='主持人'  
    set @score1 = @总分*0.5  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.2  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=6 and @分工='主持人'  
    set @score1 = @总分*0.5  
    else if @参加人数=6 and @分工='参加人'  
    set @score1 = @总分*0.2  
    else if @参加人数=6and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=6 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=6 and @分工='参加人'  
    set @score1 = @总分*0.05  
    else if @参加人数=6 and @分工='参加人'
    set @score1 = @总分*0.05  
    end 
    declare @员工编号1 char(10) 
    update 编写
    set 得分=@score1 where 编写.员工编号=@员工编号1
    end  
    print '职工号:'+@员工编号+'职工名:'+@姓名+'论文得分为:'+str(@score1)
      

  3.   

    注意变量后面加个空格再写类型
    declare @员工编号 char(10)  
    declare @score1 float  
    declare @姓名 char(50)  
    declare @论文名称 char(50)  
    declare @分工 char(10)  
    declare @参加人数 int  
    declare @总分 float 
      

  4.   

    create procedure [dbo].[论文个人得分]  
    as  
    begin  
    declare @员工编号 char(10)  
    declare @score1 float  
    declare @姓名 char(50)  
    declare @论文名称 char(50)  
    declare @分工 char(10)  
    declare @参加人数 int  
    declare @总分 float  
    set @姓名=(select 姓名 from 教职员工,编写 where 编写.员工编号=教职员工.员工编号 and @员工编号= 编写.员工编号)  
    set @论文名称=(select 论文名称 from 论文,编写 where 编写.论文编号=论文.论文编号 and 编写.员工编号=@员工编号)  
    set @分工=(select 分工 from 编写,论文 where 编写.论文编号=论文.论文编号 and 编写. 员工编号=@员工编号)  
    set @参加人数=(select 参加人数 from 论文, 编写 where 编写.论文编号=论文.论文编号 and 编写.员工编号=@员工编号)
    set @总分=(select 总分 from 论文,编写 where 编写.论文编号=论文.论文编号 and 编写. 员工编号=@员工编号)  
    begin  
    if @参加人数=1  
    set @score1=@总分
    else if @参加人数=2 and @分工='主持人'  
    set @score1 = @总分*0.7  
    else if @参加人数=2 and @分工='参加人'  
    set @score1 = @总分*0.3  
    else if @参加人数=3 and @分工='主持人'  
    set @score1 = @总分*0.6  
    else if @参加人数=3 and @分工='参加人'  
    set @score1 = @总分*0.3  
    else if @参加人数=3 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=4 and @分工='主持人'  
    set @score1 = @总分*0.5  
    else if @参加人数=4 and @分工='参加人'  
    set @score1 = @总分*0.3  
    else if @参加人数=4 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=4 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=5 and @分工='主持人'  
    set @score1 = @总分*0.5  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.2  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=5 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=6 and @分工='主持人'  
    set @score1 = @总分*0.5  
    else if @参加人数=6 and @分工='参加人'  
    set @score1 = @总分*0.2  
    else if @参加人数=6 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=6 and @分工='参加人'  
    set @score1 = @总分*0.1  
    else if @参加人数=6 and @分工='参加人'  
    set @score1 = @总分*0.05  
    else if @参加人数=6 and @分工='参加人'
    set @score1 = @总分*0.05  
    end 
    declare @员工编号1 char(10) 
    update 编写
    set 得分=@score1 where 编写.员工编号=@员工编号1
    end  
    print '职工号:'+@员工编号1+'职工名:'+@姓名+'论文得分为:'+str(@score1)
      

  5.   

    set @姓名=(select 姓名from 教职员工,编写 where 编写.员工编号=教职员工.员工编号 and @员工编号= 编写.员工编号)   
    set @论文名称=(select 论文名称from 论文,编写 where 编写.论文编号=论文.论文编号 and 编写.员工编号=@员工编号)   
    set @分工=(select 分工from 编写,论文 where 编写.论文编号=论文.论文编号 and 编写. 员工编号=@员工编号)   
    set @参加人数=(select 参加人数from 论文, 编写 where 编写.论文编号=论文.论文编号 and 编写.员工编号=@员工编号)
    set @总分=(select 总分from 论文,编写 where 编写.论文编号=论文.论文编号 and 编写. 员工编号=@员工编号)   
    消息 4104,级别 16,状态 1,过程 论文个人得分,第 11 行
    无法绑定由多个部分组成的标识符 "编写.员工编号"。
    消息 4104,级别 16,状态 1,过程 论文个人得分,第 11 行
    无法绑定由多个部分组成的标识符 "教职员工.员工编号"。
    消息 4104,级别 16,状态 1,过程 论文个人得分,第 11 行
    无法绑定由多个部分组成的标识符 "编写.员工编号"。
    消息 207,级别 16,状态 1,过程 论文个人得分,第 11 行
    列名 '姓名from' 无效。
    消息 207,级别 16,状态 1,过程 论文个人得分,第 11 行
    列名 '编写' 无效。
    消息 116,级别 16,状态 1,过程 论文个人得分,第 11 行
    当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
      

  6.   

    set @姓名=(select 姓名 from 教职员工,编写 where 编写.员工编号=教职员工.员工编号 and @员工编号= 编写.员工编号)  
    set @论文名称=(select 论文名称 from 论文,编写 where 编写.论文编号=论文.论文编号 and 编写.员工编号=@员工编号)  
    消息 209,级别 16,状态 1,过程 论文个人得分,第 11 行
    列名 '姓名' 不明确。
    消息 209,级别 16,状态 1,过程 论文个人得分,第 12 行
    列名 '论文名称' 不明确。谢谢指导