2016-04-26 94 views
-2
ALTER Procedure  [dbo].[sp1] 
@ID int 
As 
IF(SELECT Grade FROM Tb1 WHERE [email protected])BETWEEN 15 AND 20 
RETURN 'A' 
else 
RETURN 'B' 



Declare @ID1 int 
EXEC @ID1= sp1 '3'; 
Print convert(varchar(10) , @ID) 
Go 
+0

帶有id 3等級是19 –

+0

我想prosedure打印A –

回答

0

好像你有以書面查詢迷茫,我希望下面的查詢可以幫助您

ALTER PROCEDURE [dbo].[sp1] 
@ID int 
As 
BEGIN 
SELECT CASE WHEN MARKS BETWEEN 15 AND 20 THEN 
'A' 
ELSE 
'B' 
END AS 'GRADE' 
FROM [TABLE] WHERE [email protected] 
END 
+0

我想保存prosedure和使用 –

+0

,我想檢查我的表中的標記與ID –

+0

我該怎麼做? –

0

您正試圖獲得存儲過程的輸出值,如果你想消費整個輸出,下面是辦法。

下面

是消耗整個SP輸出方式:

declare @test table 
(id int) 


create proc usp_test123 
as 
begin 
select 1 
end 

insert into @test 
exec usp_test123 

select * from @test 

否則,您可以使用輸出返回,並conusme特定值

create proc usp_test1234 
(
@id int out 
) 
as 
begin 
select @id=1 
end 

declare @id int 
exec usp_test1234 
@id [email protected] output 
select @id 
0

不知道你想做什麼,但這裏有一種方法可以在程序中用輸出參數獲取A/B等級,然後打印:

ALTER Procedure [dbo].[sp1] 
@ID int, 
@Grade char(1) output 
As 
IF (exists (SELECT 1 FROM Tb1 WHERE [email protected] and Grade BETWEEN 15 AND 20)) 
set @Grade = 'A' 
else 
set @Grade = 'B' 
go 


Declare @ID1 int, @Grade char(1) 
set @ID1 = 3 
EXEC sp1 @ID1, @Grade output 
Print @Grade 
+0

非常感謝,這是正確的 –