Sql server 根据SQL Server中变量的值返回空结果集
对于你们这些家伙来说,这是一个简单的问题,我相信 我有一个存储过程,它接受一个变量@iLevel。我想确保@iLevel始终低于5 如果大于等于5,我想立即返回一个空结果集 我有Sql server 根据SQL Server中变量的值返回空结果集,sql-server,Sql Server,对于你们这些家伙来说,这是一个简单的问题,我相信 我有一个存储过程,它接受一个变量@iLevel。我想确保@iLevel始终低于5 如果大于等于5,我想立即返回一个空结果集 我有 IF @iLelel >= 5 RETURN ELSE BEGIN --all my good processing stuff 然而,这只是一无所获。我想返回一个空的结果集 如何在SQL Server中实现这一点 提前谢谢 编辑: 我正在SQL Server中运行存储过程,现在,如果在var低于5的
IF @iLelel >= 5
RETURN
ELSE
BEGIN
--all my good processing stuff
然而,这只是一无所获。我想返回一个空的结果集
如何在SQL Server中实现这一点
提前谢谢
编辑:
我正在SQL Server中运行存储过程,现在,如果在var低于5的情况下运行它,我会在messages窗口中看到结果。所有列名等。如果我在var为5或更多的情况下运行它,消息窗口只会显示“命令已成功完成”
我想我至少希望返回一个空的结果,而不仅仅是空的
可能是我错了。。。你能告诉我这对我有多新鲜吗
再次感谢 在返回之前说
选择“”
。或者,如果您有列列表,然后提到选择“作为col1”,“作为col2,…”作为coln
@Murtaza,它不会产生一个空的结果集。我想问你为什么还要调用存储过程,因为你从调用应用程序中知道@ilel
的值是>=5?你可以创建一个没有记录的临时表,从临时表中选择(当然是相同的列),然后从该临时表中选择。只需添加false“where”条件到您的最终选择,如“…和@iLevel<5”,您就完成了。
CREATE PROCEDURE usp_MyProc
@iLelel INT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
-- before you do anything do your test here
IF (@iLelel >= 5)
BEGIN
RAISERROR('Value out of range, greater than 5 blabla',16,1)
END
-- any code here will only be executed if passed the above test
-- all of the good stuff here
END TRY
BEGIN CATCH
-- Error handling here
-- Log error do what ever you want to do
END CATCH
END