![]() |
Datenbank: MSSQL Express • Zugriff über: ADO
Query: Parameter nicht gefunden
Warum funktioniert das nicht?
Delphi-Quellcode:
Ich bekomme die Meldung "Parameter PDBNAME nicht gefunden. Gibt es eine andere Möglichkeit Werte in den SQL Text zu bekommen?
procedure TSQLConnection.CreateDB(DBName: string);
const csql='DECLARE @DBNAME VARCHAR(255)'#13 +'SET @DBNAME=:PDBNAME'#13 +'USE MASTER'#13 +'IF DB_ID (N @DBNAME) IS NULL'#13 +'CREATE DATABASE @DBNAME'; begin if Connection.Connected then try Query.Active:=False; Query.SQL.Clear; Query.SQL.Text:=csql; Query.Prepared:=True; Query.Parameters.ParamValues['PDBNAME']:=DBName; Query.ExecSQL; except //nichts zu tun end; end; |
Re: Query: Parameter nicht gefunden
Indem du das beim zusammenbauen des Statements setzt
|
Re: Query: Parameter nicht gefunden
In der Art?
Delphi-Quellcode:
Das wird mir spätestens dann zu unübersichtlich, wenn Parameter dazukommen die in Hochkommas stehen, dann lieber Parameter. Muss ich eigentlich zu Beginn Prepared auf False setzen?
+'CREATE DATABASE '+DBName;
|
Re: Query: Parameter nicht gefunden
Die weiteren Parameter kannst du ja verwenden.
|
Re: Query: Parameter nicht gefunden
Ich hänge mich noch einmal an meine urspüngliche Frage an, weil sie sich im Prinzip nicht verändert hat.
Warum funktioniert das:
Delphi-Quellcode:
und nicht das:
SQL.Add('SELECT * FROM '+Tablename+';');
Delphi-Quellcode:
Ich verwende gerne Parameter, weil das den SQL-Text wesentlich übersichtlicher macht, aber leider weigert es sich in manchen Fällen beharrlich zu funktionieren. Gibt es da etwas zu beachten, was ich noch nicht weiß?
SQL.Add('SELECT * FROM :PTNAME;');
Parameters.ParamValues['PTNAME']:=Tablename; //Parameter nicht gefunden Wie bastelt ihr eure SQL Syntax zusammen? Was ist die beste Lösung? |
Re: Query: Parameter nicht gefunden
Zitat:
Zitat:
Format('SELECT * FROM %s;', [Tablename]); Oder versuchen eine SP zu erzeugen. Aber hier könnte das Problem sein das die Feldanzahl des Ergebnisses bei der Speicherung der SP nicht fest ist und damit die SP nicht angelegt werden kann. |
Re: Query: Parameter nicht gefunden
Zitat:
|
Re: Query: Parameter nicht gefunden
Moin,
die korrekte Verwendung von Parametern in Verbindung mit OLE DB (ADO) ist in der Dokumentation genau erklärt: [equote="OLE DB Programmer's Reference :: Using Parameters"]... In most cases, parameter markers can legally appear only in certain positions within an SQL statement. They cannot take the place of an identifier, such as a column name in the SELECT list or a table name in the FROM clause, and are not allowed in data definition language (DDL) statements. ... [/equote] Grüße vom marabu |
Re: Query: Parameter nicht gefunden
Danke an den Marabu. Ich weiß bescheid.
|
Re: Query: Parameter nicht gefunden
Zitat:
Parameter nur bei WHERE oder ORDER oder JOIN einsetzen. Denn nur dort machen sie Sinn. z.B.
Delphi-Quellcode:
SELECT * FROM Benutzertabelle
WHERE UserName = :Benutzer ORDER BY :Nummer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz