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
