[英]Display message based on column value returned from stored procedure
我想創建一個存儲過程,它根據表中的數據返回不同的消息。 這是我當前的存儲過程的樣子:
ALTER PROCEDURE [dbo].[sp_GETLIST_ACC]
@per_id int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @status varchar(10)
SELECT @status = req_status
FROM TOL_FILE_REQUEST
WHERE per_id = @per_id
IF @status = 'A'
BEGIN
SET @status = 'Approved'
END
ELSE IF @status = 'P'
BEGIN
SET @status = 'Pending'
END
SELECT
req_id,
file_no,
req_status,
FROM
TOL_FILE_REQUEST
WHERE
per_id = @per_id
END
桌子是這個
req_id | file_no | req_status
-------+----------+-----------
6 | AS000001 | A
10 | AS000002 | P
11 | AS000003 | A
12 | AS000004 | A
13 | AS000005 | A
但是在執行存儲過程之后,我得到了以下內容:
req_id | file_no | req_status
-------+----------+-----------
6 | AS000001 | Approved
10 | AS000002 | Approved
11 | AS000003 | Approved
12 | AS000004 | Approved
13 | AS000005 | Approved
但我需要的是:
req_id | file_no | req_status
-------+----------+-----------
6 | AS000001 | Approved
10 | AS000002 | Pending
11 | AS000003 | Approved
12 | AS000004 | Approved
13 | AS000005 | Approved
據我了解, req_status
遵循最新插入的數據。 但為什么? 我能做些什么來克服這個問題? 我嘗試使用 cursor 進行迭代並使用計數器,但它執行了多次。
提前致謝!
只需使用CASE
語句在一個語句中完成所有操作。
ALTER PROCEDURE [dbo].[sp_GETLIST_ACC]
@per_id int
AS
BEGIN
SET NOCOUNT ON;
SELECT req_id,
file_no,
CASE req_status
WHEN 'A' THEN 'Approved'
WHEN 'P' THEN 'Pending'
ELSE 'Unknown'
END as req_status
FROM TOL_FILE_REQUEST
WHERE per_id = @per_id
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.