Hi Leute!
Ich arbeite an einer Abfrage, welche mir aus der GESAMTEN Datenbank einen Wert sucht.
Leider bin ich kein Profi, deswegen muss ich mich nun an euch wenden ;)
(Ich weiß, man könnte hier in diesem Beispiel mit Cursern arbeiten und das würde vielleicht vieles vereinfachen, doch ich habe die Curser noch nicht ganze verstanden und wollte es eben "auf meine Art" machen...)
Ich hab dazu den folgenden Code geschrieben:
WHILE @i <= @lTables
BEGIN
DECLARE @TableName varchar(50) = (
SELECT TOP 1 TABLE_NAME
FROM (SELECT TOP (@i) TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
ORDER BY TABLE_NAME) a
ORDER BY TABLE_NAME DESC)
DECLARE @lColumns int = (
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName)
WHILE @j <= @lColumns
BEGIN
SELECT *
FROM (SELECT TOP 1 *
FROM (SELECT TOP (@i) *
FROM INFORMATION_SCHEMA.TABLES
ORDER BY TABLE_NAME) t
ORDER BY TABLE_NAME DESC)
WHERE CAST((SELECT TOP 1 *
FROM (
SELECT TOP (@j) COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName
ORDER BY COLUMN_NAME) c
ORDER BY COLUMN_NAME DESC)
AS VARCHAR(max))
= @Suchbegriff;
SELECT @j = @j + 1;
END
SELECT @i = @i + 1;
END
Was mache ich hier?
Das Prinzip ist einfach: ich gehe mit einer Schleife durch alle Tabellen, pro Tabelle ich mit einer Schleife nocheinmal durch alle Spalten, um überall nach dem Suchbegriff zu sehen.
Nur das Problem: Ich bekomme die Fehlermeldung "Meldung 156, Ebene 15, Status 1, Zeile 19 Falsche Syntax in der Nähe des WHERE-Schlüsselworts." und im Code dann noch "Erwartet wird AS, ID oder QUOTED_ID".
Nur kann ich damit nichts anfangen...jemand von euch vielleicht eine Idee wie man das Lösen könnte? :D
PS: Ich hoffe der Code ist lesbar ^^