2017-03-16 1 views
0

Dies führt eine gespeicherte procprüfen Rekordwert nach dem Update gespeicherte Prozedur MS SQL

EXEC dbo.Web_update 
@hHomeEmail = '[email protected]', 
@pPassword = 'XXXXX', 
@mMemberID = '123456' 

gespeicherte Prozedur

UPDATE Member 
SET pass_w = @pPassword, 
HomeEmail = @hHomeEmail 
WHERE [email protected]; 

Ich möchte die Werte von HomeEmail überprüfen und pass_w nach dem Update, wenn NULL oder den booleschen Wert als Ergebnis dieses Aufrufs nicht zurückzugeben.

---------- ---------- UPDATE

USE [Test] 
GO 
/****** Object: StoredProcedure [dbo].[Web_update] Script Date: 03/21/2017 12:37:46 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  
-- Create date: 
-- Description: 
-- ============================================= 
ALTER PROCEDURE [dbo].[Web_update] 
    -- Add the parameters for the stored procedure here 

    @hHomeEmail nvarchar(10) = NULL, 
    @MemberNo nvarchar(10) = NULL, 
    @pPassword nvarchar(10) = NULL, 
    @mMemberID INT 

AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    UPDATE Member SET pass_w = @pPassword, HomeEmail = @hHomeEmail WHERE [email protected]; 

    -- Insert statements for procedure here 
    SELECT CASE WHEN EXISTS (SELECT 1 FROM member WHERE [email protected] AND pass_w = NULL OR HomeEmail= NULL) 

     THEN CAST(1 AS BIT) 
      ELSE CAST(0 AS BIT) END 


END 

Nun möchte Ich mag überprüfen, ob:

pass_w = NULL

OR

pass_w = ''

OR

HomeEmail = NULL

ODER

HomeEmail = ''

wenn einer von ihnen dann CAST (1 AS BIT)

ELSE CAST (0 AS BIT)

+0

Warum alle in diesen Spalten an erster Stelle null? –

+0

Mögliches Duplikat von [Aktualisierte Zeile abrufen] (http://StackOverflow.com/questions/1367018/get-updated-row) –

+0

Warum wurde die Elementtabelle später mit Null sowohl HomeEmail als auch pass_w hinzugefügt. Mitglieder können sich jetzt online anmelden, müssen aber HomeEmail und pass_w aktualisieren, bevor sie fortfahren können. –

Antwort

0

Sie kann zu Ihrer gespeicherten Prozedur einen Ausgabeparameter hinzufügen:

CREATE PROCEDURE dbo.Web_update 
(
    @hHomeEmail = varchar(10), 
    @pPassword = varchar(10), 
    @mMemberID = varchar(10) 
    @@pIsNull bit OUTPUT 
) 
AS 
UPDATE Member 
SET pass_w = @pPassword, 
HomeEmail = @hHomeEmail 
WHERE [email protected]; 

SELECT @pIsNull = CAST(CASE WHEN EXISTS (
              SELECT 1 
              FROM Member 
              WHERE [email protected] 
              AND pass_w IS NULL 
              AND HomeEmail IS NULL) THEN 1 
          ELSE 0 END As Bit) 
+0

Hallo danke für deine Antwort –

Verwandte Themen