代码之家  ›  专栏  ›  技术社区  ›  Churchill

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

  •  1
  • Churchill  · 技术社区  · 14 年前

    这是我的逻辑。

    我有一个文章表和一个匹配的图片表。图像以二进制格式存储。每个图像表都有两个图像实例,这是因为我有两个大小。300 x 200和500 x 400,行之间用图像大小分隔

    我想编写一个存储过程,检查imagesize=3是否可用,如果不可用,则从imagesize=2检索。

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

    谢谢

    2 回复  |  直到 14 年前
        1
  •  2
  •   marc_s Anurag    14 年前

    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
    

    基本上是一样的-但它会继续返回 Image 对于 ImageSize = 3 即使你突然也有了4、5等大小的图像代码。

        2
  •  5
  •   Andomar    14 年前

    您可以通过简单的 top 1 :

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