存储过程如果存在不给出正确答案

Posted

技术标签:

【中文标题】存储过程如果存在不给出正确答案【英文标题】:Stored procedure if exists not giving correct answer 【发布时间】:2010-10-15 16:26:13 【问题描述】:

我创建了一个 sql 2005 存储过程来告诉我我正在搜索的 CRID 是否得到主管的批准。 [SuperApproved] 有点,[CRID] 是 char(36)。即使 CRID 不存在,我仍然得到 1。 写这个有什么帮助吗?

USE [cr_Saturn2]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  Randy Baker
-- Create date: 10/12/2010
-- Description: Check for Approved CRID in CostReportTracking
-- =============================================
alter PROCEDURE [dbo].[st_Is_CostReportApproved]
 -- Add the parameters for the stored procedure here
 @myECR char(36) = null  
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

if exists(
 select [CRID]
 from [dbo].[CostReportTracking]
 where [SuperApproved] = 1)

 -- exists- cost report is Approved by Supervisor
 select 1
else
 -- does not exist
 select 0    
END

【问题讨论】:

【参考方案1】:

我认为您需要在某处添加and [CRID] = @myECR。现在您只是在检查是否有任何记录已获得SuperApproved

【讨论】:

哎呀-是的-我的错!你绝对正确。感谢您的回复! @randy 不客气。如果我的回答对您有所帮助,请点击左侧的复选标记将其作为答案。

以上是关于存储过程如果存在不给出正确答案的主要内容,如果未能解决你的问题,请参考以下文章

存储过程没有给出正确的值

计算在存储过程中给出错误结果

如果存储过程尚不存在,则创建它,但不要更改也不要删除现有的存储过程

如果记录存在,Oracle 存储过程会更新行

我可以在 MS Access 2010 中创建存储过程吗?

Mysql 如果不存在会在存储过程中给我一个错误