使用用户定义的函数搜索表

时间:2015-11-16 20:08:56

标签: sql sql-server database function

我试图编写一个给出游戏名称的SQL函数,它允许我搜索特定游戏的游戏表并返回有关该游戏的所有信息。

这是Games表的代码:

CREATE TABLE Games(

game_id INT IDENTITY PRIMARY KEY,
name VARCHAR(50),
release_date VARCHAR(50),
rating VARCHAR(5),
min_age INT,
development_team_email VARCHAR(50) FOREIGN KEY REFERENCES Development_Teams,
release_conference INT FOREIGN KEY REFERENCES Conferences
)

这是我在尝试编写函数时可以想到的:

create function SearchGames(@game_name varchar(50))

returns table
begin
declare @game 

Select (*)
From Games
where Games.name = @game_name

return @game
end

我遇到了很多语法错误,而且我不知道自己做错了什么。任何帮助赞赏。

2 个答案:

答案 0 :(得分:2)

使用inline table valued function语法并添加架构:

create function dbo.SearchGames(@game_name varchar(50))
returns table
AS
RETURN (Select *
        From Games
        where Games.name = @game_name);  

SqlFiddleDemo

如果您使用存储过程,则需要使用:

 CREATE TABLE ...;
 INSERT INTO ... EXEC stored_procedure @args;
 -- another operation on stored procedure resultset

使用内联表函数时,您只需:

 SELECT * FROM dbo.SearchGames('aaa') GROUP BY ... HAVING ... ORDER BY;

答案 1 :(得分:0)

我建议不要使用function,而应使用stored procedure

Create Proc spSearchGames (@game_name Varchar (50))
As Begin
    Select  *
    From    Games
    Where   name = @game_name
End
Go

执行它:

Exec spSearchGames 'YourGameName'