0

这里有张桌子:

ID   Name   Rank
1    X       Professor
2    X       Principal
3    X       Term Prof
4    X       assistant

我想要编写存储过程来根据输入选择最后一个教授等级或助理等级。这是存储过程的格式:

create procedure proc_name(@includeassistant varchar(3))

end

如果 includeassistant 为“yes”,则为 assistant,则必须显示最后一行,如果 include assistant 为 no,则必须提供 Term prof 行。

4

2 回答 2

1

我想知道您所说的“最后教授级别”是什么意思,但无论如何,T-SQL 中没有这样的功能LAST。但是你可以试试这个(假设IDIDENTITY):

create procedure proc_name
@includeassistant varchar(3)
AS
SET NOCOUNT ON

SELECT TOP 1 ID, Name, Rank
FROM tbl
WHERE (@includeassistant='YES' AND Rank='Assistant')
      OR (@includeassistant='NO' AND Rank='Professor')
ORDER BY ID DESC
于 2012-11-06T00:09:42.693 回答
1

你可以这样使用

create procedure proc_name(@includeassistant varchar(3))
AS
BEGIN
  IF @includeassistant='YES'
     SELECT   * FROM dbo.[table] where [RANK]='assistant'
  ELSE 
     SELECT   * FROM dbo.[table] where [RANK]='Term Prof'
END


--- OR 

create procedure proc_name(@includeassistant varchar(3))
AS
BEGIN
  SELECT   * 
  FROM dbo.[table] 
  WHERE [RANK]=CASE WHEN @includeassistant='YES' THEN 'assistant' ELSE 'Term Prof' END
END
于 2012-11-05T23:58:58.587 回答