Hallo,

wieder einmal eine Frage zum Thema T-SQL:

Bei untenstehender Prozedur werden Tabellenname, Tabellenattribut und der Filterwert �bergeben.
In Abh�ngigkeit davon, ob der Filterwert eine Zahl ist oder nicht, soll eine von 2 Bedingungen ausgef�hrt werden.
Wenn jetzt eine Zahl im Parameter @strValue landet, also die erste Bedingung ausgef�hrt wird, so bekomme ich die Meldung:


Zeile 1: Falsche Syntax in der N�he von '='.

Wenn ich nun aber die Hochkommas versuche herauszunehmen, l�sst sich die Proc nicht mehr speichern.

In der Zweiten Bedingung, die ja Ber�cksichtigung findet, wenn ich eine Zeichenkette wie z.B. 'Lars' �bergebe, die nicht in eine Zahl umgewandelst werden kann, heist es z.B.:
Ung�ltiger Spaltenname 'Lars'.


Er interpretiert die letzte Variable also auch als spaltenname...

Habt ihr Ideen, was hier wie umgestellt werden muss??

ALTER PROCEDURE dbo.AdminSourceGet
/*
Liefert die Ergebnisse f�r die Administration zur�ck.
Tabelle, Attribut und Wert werden �bergeben.
        */

        @TableName VARCHAR(30),
        @AttributeName VARCHAR(30),
        @strValue VARCHAR(30)

AS


DECLARE @Tbl VARCHAR(30) DECLARE @strVal VARCHAR(30) DECLARE @intVal INT DECLARE @AttrName VARCHAR(30)

SET @Tbl = @TableName
SET @AttrName = @AttributeName
IF (ISNUMERIC(@strValue)= 1)
BEGIN
SET @intVal = CAST(@strValue AS INTEGER)
EXEC ('SELECT * FROM '+ @Tbl + 'WHERE ' + @AttrName + ' = ' + @intVal)
END
IF (ISNUMERIC(@strValue)= 0)
BEGIN
SET @strVal = @strValue
--EXEC ('SELECT * FROM '+ @Tbl + ' WHERE ' + @AttrName + ' LIKE ' + '%' + @strVal + '%')
END


RETURN


Viele Gr�sse Lars




www.zoologie-online.de


Lars Berner
Stormcrow-Software
Postfach: 110123
69071 Heidelberg

---
Ausgehende Mail ist zertifiziert virenfrei.
�berpr�ft durch AVG Antivirus System (http://www.grisoft.com/de).
Version: 6.0.524 / Virendatenbank: 321 - Erstellungsdatum: 06.10.2003

Antwort per Email an