简体   繁体   English

是否在存储过程中声明?

[英]if else Statement in stored procedure?

I have this stored procedure which get data from excell and then update status: 我有这个存储过程,该过程从excell获取数据,然后更新状态:

ALTER PROCEDURE [dbo].[sp_AllocateSerial]
@Limit int,
@Part varchar (50),
@Status varchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here

SELECT TOP (@LIMIT) PartNumber,SerialNumber,Batch,Location,PalletNumber,Status
FROM dbo.FG_FILLIN where Status='FG-FRESH' and PartNumber=@Part ORDER BY PartNumber

END

Now: 现在:

If my serial numbers Status is Allocated I want to show an error message that the serial has already been allocated. 如果序列号的状态为已分配,我想显示一条错误消息,说明序列号已经分配。

Try something like this I used mostly fake values so you will have to change for your enviroment. 尝试这样的事情,因为我使用的大多数都是伪造的值,所以您必须针对自己的环境进行更改。

IF NOT EXISTS (SELECT SerialNumber WHERE SerialNumber = @SerialNumber AND Status = 'Allocated')
BEGIN
//Logic for if the serial number is not allocated
END
ELSE
BEGIN
//Logic for the serial number being in the allocated state
END
IF EXISTS (SELECT * FROM FG_FILLIN WHERE Status = 'Allocated' AND SerialNumber = @Serial) 
BEGIN

  RAISERROR
    (N'Serial number %s has already been allocated.',
     10, -- Severity.
     1, -- State.
     @Serial)

END

您可能要使用out参数,然后让客户端测试ot而不是sql异常

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM