+ -
当前位置:首页 → 问答吧 → aqlserver2005 函数

aqlserver2005 函数

时间:2011-12-19

来源:互联网

create function biantolunscore
returns @score1 (int)
begin 
select 刊物级别 as 刊物级别 
case 
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 80
when 刊物级别='会议论文' then 70
end as score
from 论文

消息 156,级别 15,状态 1,过程 biantolunscore,第 3 行
关键字 'begin' 附近有语法错误。
消息 156,级别 15,状态 1,过程 biantolunscore,第 5 行
关键字 'case' 附近有语法错

谢谢

作者: zhongqi2012   发布时间: 2011-12-19

你这个可以写成视图 写什么函数?

作者: fredrickhu   发布时间: 2011-12-19

SQL code
create function biantolunscore
returns @score1 (int)
begin  
select 刊物级别 as 刊物级别 , --这缺个逗号 
case  
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 80
when 刊物级别='会议论文' then 70
end as score
from 论文
end --这缺个end

作者: maco_wang   发布时间: 2011-12-19

select 变量后跟, 另begin后要接END  

这个写函数没必要吧 视图搞定好了!

作者: szstephenzhou   发布时间: 2011-12-19

SQL code
create function biantolunscore
(
@score1 int
)
returns  int
begin  
select 刊物级别 as 刊物级别 , --这缺个逗号 
case  
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 80
when 刊物级别='会议论文' then 70
end as score
from 论文
end --这缺个end

作者: fredrickhu   发布时间: 2011-12-19

标量函数
返回的是标量值
没看出来你要返回什么

作者: wufeng4552   发布时间: 2011-12-19

引用 4 楼 fredrickhu 的回复:
SQL code
create function biantolunscore
(
@score1 int
)
returns int
begin
select 刊物级别 as 刊物级别 , --这缺个逗号
case
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 8……

作者: wufeng4552   发布时间: 2011-12-19

楼主这个函数写的问题挺多
1. returns @score1 (int)
  这句应该写成 returns int
2.select 刊物级别 as 刊物级别,--这里缺个逗号
case  
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 80
when 刊物级别='会议论文' then 70
end as score
3.另外你既然写了returns
那么在函数结尾应该有个return (变量名或数值常量)

作者: pengxuan   发布时间: 2011-12-19

引用 4 楼 fredrickhu 的回复:
SQL code
create function biantolunscore
(
@score1 int
)
returns int
begin
select 刊物级别 as 刊物级别 , --这缺个逗号
case
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 8……

20分的帖子
也抢?

作者: wufeng4552   发布时间: 2011-12-19

引用 4 楼 fredrickhu 的回复:
SQL code

create function biantolunscore
(
@score1 int
)
returns int
begin
select 刊物级别 as 刊物级别 , --这缺个逗号

++(眼尖)

作者: ju523756055   发布时间: 2011-12-19

引用楼主 zhongqi2012 的回复:
create function biantolunscore
returns @score1 (int)
begin
select 刊物级别 as 刊物级别
case
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 80
when 刊物级别='会议论文' then 70
end……
刊物级别和case之间少了一个逗号

作者: lz_sha   发布时间: 2011-12-19

引用 2 楼 maco_wang 的回复:
SQL code
create function biantolunscore
returns @score1 (int)
begin
select 刊物级别 as 刊物级别 , --这缺个逗号
case
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志' then 80
when 刊物……



确定了刊物级别,就确定了分数,是不是应该用函数触发器?

作者: zhongqi2012   发布时间: 2011-12-19

引用 11 楼 zhongqi2012 的回复:
引用 2 楼 maco_wang 的回复:
SQL code
create function biantolunscore
returns @score1 (int)
begin
select 刊物级别 as 刊物级别 , --这缺个逗号
case
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊' then 90
when 刊物级别='报纸杂志……

你的意思是根据刊物级别得到分数?

建议你给出表结构,测试数据及要想的结果。

作者: maco_wang   发布时间: 2011-12-19

引用 12 楼 maco_wang 的回复:
引用 11 楼 zhongqi2012 的回复:
引用 2 楼 maco_wang 的回复:
SQL code
create function biantolunscore
returns @score1 (int)
begin
select 刊物级别 as 刊物级别 , --这缺个逗号
case
when 刊物级别='核心期刊' then 100
when 刊物级别='一般期刊……


是的

作者: zhongqi2012   发布时间: 2011-12-19

根据刊物级别得到分数.
谢谢

作者: zhongqi2012   发布时间: 2011-12-19

SQL code
CREATE FUNCTION biantolunscore ( @score1 INT )
RETURNS INT
AS 
    BEGIN  
        SET @score1 = ( SELECT  CASE WHEN 刊物级别 = '核心期刊' THEN 100
                                     WHEN 刊物级别 = '一般期刊' THEN 90
                                     WHEN 刊物级别 = '报纸杂志' THEN 80
                                     WHEN 刊物级别 = '会议论文' THEN 70
                                END
                        FROM    论文
                      )
        RETURN @score1
    END

作者: wufeng4552   发布时间: 2011-12-19

SQL code
CREATE TABLE chen
(
   id int,
   title varchar(20),
   types varchar(20)
)

INSERT INTO chen(id,title,types)VALUES(1,'第一刊物','核心期刊')
INSERT INTO chen(id,title,types)VALUES(2,'第二刊物','报纸杂志')
INSERT INTO chen(id,title,types)VALUES(3,'第三刊物','一般期刊')
INSERT INTO chen(id,title,types)VALUES(4,'第四刊物','核心期刊')
INSERT INTO chen(id,title,types)VALUES(5,'第五刊物','报纸杂志')
INSERT INTO chen(id,title,types)VALUES(6,'第六刊物','报纸杂志')
INSERT INTO chen(id,title,types)VALUES(7,'第七刊物','一般期刊')
INSERT INTO chen(id,title,types)VALUES(8,'第八刊物','会议论文')
INSERT INTO chen(id,title,types)VALUES(9,'第九刊物','会议论文')
INSERT INTO chen(id,title,types)VALUES(10,'第十刊物','核心期刊')


SQL code
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
CREATE FUNCTION chens
(    
    -- Add the parameters for the function here
    --<@param1, sysname, @p1> <Data_Type_For_Param1, , int>, 
    --<@param2, sysname, @p2> <Data_Type_For_Param2, , char>
)
RETURNS TABLE 
AS
RETURN 
(
    -- Add the SELECT statement with parameter references here
    SELECT id,title,types,
      (CASE WHEN types='核心期刊' then 100
             WHEN types='一般期刊' then 90
             WHEN types='报纸杂志' then 80
             WHEN types='会议论文' then 70
      END) AS core
FROM chen
)
GO


SELECT * FROM chens()

作者: chenguang79   发布时间: 2011-12-19