需要有关SQL 2000存储过程的帮助

时间:2010-07-18 15:15:26

标签: sql sql-server-2000

这是我的逻辑。

我有一个文章表和一个匹配的图像表。图像以二进制格式存储。每个图像表每个图像有2个实例,这是因为我有2个尺寸。 300 x 200和500 x 400,其行由ImageSize分隔

我想编写一个存储过程来检查ImageSize = 3是否可用,如果没有,则从ImageSize = 2中检索。

如何设置存储过程来执行此操作?

由于

2 个答案:

答案 0 :(得分:5)

您可以使用简单的top 1找到尺寸最大的图片:

create procedure dbo.GetImage(
    @ImageName varchar(50))
as
select  top 1 image
from    ImageTable
where   ImageName = @ImageName
order by
        ImageSize desc

答案 1 :(得分:2)

Andomar的回答是完全有效且非常优雅的 - 如果你想要更加“脚踏实地”的东西,考虑到未来可能还有其他数字值,试试这个:

CREATE PROCEDURE dbo.FetchImage(@ImageName VARCHAR(255))
AS
   IF EXISTS(SELECT * FROM dbo.ImageTable
             WHERE ImageName = @ImageName AND ImageSize = 3)
      SELECT
          Image
      FROM
          dbo.ImageTable
      WHERE
          ImageName = @ImageName AND ImageSize = 3
   ELSE
      SELECT
          Image
      FROM
          dbo.ImageTable
      WHERE
          ImageName = @ImageName AND ImageSize = 2

这基本上做同样的事情 - 但即使您突然还有图像大小代码为4,5等,它仍会继续返回Image ImageSize = 3