PeterWa 0 Geschrieben 10. April 2019 Melden Teilen Geschrieben 10. April 2019 Hallo und guten Morgen Bevor ich mein Problem erkläre möchte ich festhalten das dies meine ersten Schritte in SQL Server sind. Nun zur meiner Frage:: Wie behandelt man einen leeren Datensatz, Um es genauer zu sagen Wenn bei nachstehnder Abfrage kein Ergebniss vorhanden ist. wenn also bei nachstehender abfrage kein Wert vorhanden ist. Set @Kunde = (Select Kundenrabatt FROM dbo.tblKundenRabatt WheRE Rabattgruppe = @Rabattgruppe And Kundenadresse=@Adresse) Meine Versuche mit @Kunde is null oder @kunde = 0 Brachten mich leider nicht weiter, Besten dank für einen tipp im voraus! mfg Peter Zitieren Link zu diesem Kommentar
v-rtc 88 Geschrieben 10. April 2019 Melden Teilen Geschrieben 10. April 2019 Hallo Peter, was ist Dein Ziel? Grüße Zitieren Link zu diesem Kommentar
PeterWa 0 Geschrieben 10. April 2019 Autor Melden Teilen Geschrieben 10. April 2019 Hallo! Mein Ziel: Es gibt in dieser Procedur 2 Abfragen die eine oben und eine die nur den Allgemeinen Rabatt beinhaltet. Wenn also die 1. Abfrage leer ist, dann wird die 2. Abfrage aktiv. Der Aufruf der Prc : @Rabattgruppe @Adresse @Rabatt steht für den Rückgabewert der Proc. Die Variableen @Kunde steht für die 1. Abfrage @Special steht für die 2. Abfrage Es sollte ungefähr so wie unten beschreiben klappen Ich stelle mir das zumindest so vor (vielleicht ein bischen Blauäugig?) if @Kunde = null SET @Rabatt = @Spcial -- Name der 2. Abfrage else SET @Rabatt =@Kunde mfg Peter Zitieren Link zu diesem Kommentar
Lian 2.415 Geschrieben 10. April 2019 Melden Teilen Geschrieben 10. April 2019 Hallo Peter, packst Du bitte die SQL Anweisungen als Code in den Editor? Einfach den Button </> nutzen, das erhöht die Lesbarkeit ungemein, Danke für die Beachtung Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 10. April 2019 Melden Teilen Geschrieben 10. April 2019 Kannst du auch mal Beispiele der Daten liefern? Ein paar (anonyme) Werte für alle relevanten Tabellen sollten reichen. Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 10. April 2019 Melden Teilen Geschrieben 10. April 2019 Zeig doch bitte den kompletten Code in einem Code Tag. Danke. Zitieren Link zu diesem Kommentar
PeterWa 0 Geschrieben 12. April 2019 Autor Melden Teilen Geschrieben 12. April 2019 Hallo! Ich sende die komplette Procedur. Nochmals die Function: Wenn Adresse und Rabattgruppe in @Kunden vorhanden, dann soll der Rabatt von @Kunde genommen werden. zB: '0007',3 Diese sind vorhanden und werden auch Übernommen Wenn aber statt der 3 eine 4, Dieser Kunde ist in der tblKundenrabatt nicht vorhanden. Er bekommt den @Special Rabatt Wenn ich die Proc ausführe und mit Print @Kunde und Print @Special konntroliere und @Kunde ist False ist das auch leer. Ich habe mich mit einer Unterabfrage abgemüht, wenn @Kunde ohne Ergebniss ist, eine 0 angezeigt wird, da bin ich aber an der Erstellung gescheitert Ich hoffe das ich jetzt alles richtig erklärt habe. mfg Peter ALTER Procedure [dbo].[spRabatt] @Rabattgruppe varchar(25), @Adresse Int, @Rabatt real Output AS Declare @Special as real Declare @Kunde as real Begin SET @Special = (SELECT Spezial FROM dbo.tblRabattgruppe WHERE Rabattgruppe = @Rabattgruppe); Set @Kunde = (Select Kundenrabatt FROM dbo.tblKundenRabatt WHERE Rabattgruppe = @Rabattgruppe And Kundenadresse = @Adresse); SET @Rabatt = @Kunde End Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 13. April 2019 Melden Teilen Geschrieben 13. April 2019 Evtl. hilft ein If ELSE im Statement weiter: https://docs.microsoft.com/de-de/sql/t-sql/language-elements/if-else-transact-sql?view=sql-server-2017 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/c72397d1-e5aa-4d56-8793-9e363738f888/if-else-in-stored-procedure?forum=transactsql BTW: Die Deklaration der Variablen und die Benennung der Feldnamen sind IMO etwas unglücklich. Bei @Adresse gehe ich nicht von einer ID (int) aus, ebenfalls bei Kundenadresse. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.