2011-09-27 87 views
0

我有一種情況,如何寫入存儲過程

書號|書籍作者|出版物|版本

控制我在上述字段中使用的控件,書號中的標籤,書籍作者中的組合框,出版物中的標籤和版本中的組合框中的標籤。

以上是我的UI,如果我從組合框中選擇書籍作者(組合框中的值正在從數據庫中檢索),發佈和版本的值應根據從我從組合框。該頁面不應刷新。如何爲此編寫存儲過程。

+0

@Scorpion:我只是試過選擇查詢,但它不工作。 –

回答

2

看起來你真的在問錯誤的問題。關於如何編寫select語句(通過存儲過程,或不),這裏有幾個很好的答案。

但是,從數據庫獲取數據與將數據放入用戶界面的相應控件無關,並且與確保頁面不刷新無關。

如果你真的對如何編寫一個簡單的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;那麼你需要提出一個新的問題。它應該是特定於您的Web框架的。一般來說,如果你想不刷新網頁界面更新,你將使用某種形式的AJAX。

0

如果您要做的只是級聯盒子,您可以編寫一個返回相應行的SELECT查詢。這不是存儲過程的功能。

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

存儲過程用於處理數據,而不是選擇它。

+0

好的,但我想要選擇值取決於我在組合框中選擇的項目,我不想像這樣選擇像「select * from」這樣的所有值。 –

+1

「存儲過程用於處理數據,而不是選擇它。」那麼......也許在你的世界裏就是這樣。我來自哪裏是一個完全不同的問題。根本不允許客戶端添加任何鉤子查詢。所有查詢**都有**要在SP中完成。 –

+0

@MikaelEriksson:那我怎麼能做到這一點?你能告訴我嗎? –

0

這是你如何寫一個存儲過程,會爲你取東西。我當然不知道你想要什麼輸出和你需要什麼參數...

create procedure GetBooksByAuthorID 
    @AuthorID int 
as 

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