Announcement

Collapse
No announcement yet.

Prozedur verwendung Like Operr.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Prozedur verwendung Like Operr.

    Hallo,

    mein Problem scheint an der Variable zu hängen.

    wie ist es überhaupt richtig
    Anführungszeichen mit der Variable übergeben ?
    Schreibe ich die Variable so LIKE '@plz%' dann wird die Variable als String ausgegeben und nicht der Inhalt.

    so geht es
    Declare @plz nvarchar(3)
    SeT @plz='73%'
    AND WM_User_prof.prof_plz LIKE @plz

    und so nicht
    SeT @plz=73%

    Wenn ich nur var oder nvarchar angebe bekomme ich keine Rückmeldung
    PLZ kann ja 5 Stellig sein, kann ich nicht (3) angeben.

    Gruß Claus

  • #2
    Hallo,
    das folgende Beispiel verdeutlicht die Zusammenhänge:
    <code>
    <div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border-top: windowtext 1pt solid; padding-top: 0pt; border-left: windowtext 1pt solid; padding-left: 0pt; border-right: windowtext 1pt solid; padding-right: 0pt; border-bottom: windowtext 1pt solid; padding-bottom: 0pt;"><p style="margin: 0px;"><span style="color: blue;">USE </span>tempdb</p><p style="margin: 0px;">GO</p><p style="margin: 0px;"><span style="color: green;">-- Test-Tabelle</span></p><p style="margin: 0px;"><span style="color: blue;">CREATE TABLE </span>test</p><p style="margin: 0px;">(</p><p style="margin: 0px;">&nbsp; id&nbsp;&nbsp; <span style="color: blue;">INT </span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: blue;">NOT NULL IDENTITY PRIMARY KEY</span>,</p><p style="margin: 0px;">&nbsp; plz&nbsp; <span style="color: blue;">NVARCHAR</span>(5) <span style="color: blue;">NOT NULL</span></p><p style="margin: 0px;">)</p><p style="margin: 0px;">GO</p><p style="margin: 0px;"><span style="color: blue;">INSERT INTO </span>test (plz) <span style="color: blue;">VALUES </span>(<span style="color: maroon;">'12345'</span>);</p><p style="margin: 0px;"><span style="color: blue;">INSERT INTO </span>test (plz) <span style="color: blue;">VALUES </span>(<span style="color: maroon;">'54321'</span>);</p><p style="margin: 0px;">GO</p><p style="margin: 0px;">&nbsp;</p><p style="margin: 0px;"><span style="color: blue;">CREATE PROCEDURE </span>spTestSelect</p><p style="margin: 0px;">(</p><p style="margin: 0px;">&nbsp; @plz <span style="color: blue;">NVARCHAR</span>(5)</p><p style="margin: 0px;">)</p><p style="margin: 0px;"><span style="color: blue;">AS</span></p><p style="margin: 0px;">&nbsp; <span style="color: blue;">SET NOCOUNT ON</span>;</p><p style="margin: 0px;">&nbsp; <span style="color: blue;">SELECT</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; id, plz</p><p style="margin: 0px;">&nbsp; <span style="color: blue;">FROM</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; dbo.test</p><p style="margin: 0px;">&nbsp; <span style="color: blue;">WHERE</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; plz <span style="color: blue;">LIKE </span>@plz;</p><p style="margin: 0px;"><span style="color: blue;">RETURN </span>@@ROWCOUNT</p><p style="margin: 0px;">GO</p><p style="margin: 0px;">&nbsp;</p><p style="margin: 0px;"><span style="color: green;">-- Stored Procedure testen</span></p><p style="margin: 0px;"><span style="color: blue;">DECLARE </span>@i&nbsp;&nbsp; <span style="color: blue;">INT</span>;</p><p style="margin: 0px;"><span style="color: blue;">DECLARE </span>@plz <span style="color: blue;">NVARCHAR</span>(5);</p><p style="margin: 0px;"><span style="color: blue;">SELECT </span>@plz = <span style="color: maroon;">'123%'</span>;</p><p style="margin: 0px;"><span style="color: blue;">EXEC </span>@i = spTestSelect @plz</p><p style="margin: 0px;"><span style="color: blue;">PRINT </span>@i</p></div>
    </code>
    Da LIKE nur Zeichenketten vergleicht, muss der zu prüfende Wert als String-Literal (also in Hochkommas eingeschlossen) übergeben werden. Die Variable wird vom gleichen Datentyp und in der gleichen Datenbreite deklariert wie die Spalte der abgefragten Basis-Tabelle

    Comment

    Working...
    X