如何编写存储过程

时间:2011-09-27 06:50:09

标签: sql-server stored-procedures

我有一种情况,

书号|书籍作者|出版物|版本

我在上述字段中使用的控件,书号中的标签,书籍作者中的组合框,出版物中的标签和版本中的组合框。

以上是我的UI,如果我从组合框中选择书籍作者(组合框中的值是从db检索),则发布和版本的值应根据我从组合中选择的项目从db中检索框。页面不应该刷新。如何为此编写存储过程。

4 个答案:

答案 0 :(得分:2)

好像你真的在问错误的问题。关于如何编写select语句(通过存储过程,或不是),这里有几个很好的答案。

但是,从数据库获取数据与将数据放入UI上的相应控件几乎没有关系,与确保页面不刷新无关。

如果您真的对如何为简单的select语句编写存储过程感兴趣,请接受@ MikaelEriksson的答案,但添加适当的SET语句以最大限度地减少将来的升级问题。您还需要修改列名和表名以反映您的实际数据(当然)。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE GetBooksByAuthorID
   @AuthorID int
AS
BEGIN
    SELECT B.BookName,
           B.BookID
    FROM Books as B
    WHERE B.AuthorID = @AuthorID
    ORDER BY B.BookName 
END
GO

如果您对如何将数据绑定到UI感兴趣,以及如何在不刷新UI的情况下执行此操作;那么你需要问一个关于这个的新问题。它应该特定于您的Web框架。一般来说,如果您想要在没有刷新的情况下更新Web UI,您将使用某种形式的AJAX。

答案 1 :(得分:0)

如果您要做的只是级联框,则编写一个返回相应行的SELECT查询。这不是存储过程的作用。

SELECT * FROM `books` WHERE `author_id` = [author_id]

存储过程用于处理数据,而不是选择它。

答案 2 :(得分:0)

答案 3 :(得分:0)

这是您编写将为您获取内容的存储过程的方法。我当然不知道你想要什么输出以及你需要什么参数......

create procedure GetBooksByAuthorID
  @AuthorID int
as

select B.BookName,
       B.BookID
from Books as B
where B.AuthorID = @AuthorID
order by B.BookName