![]() |
Datenbank: MySQL • Version: 5.x • Zugriff über: SciBit Komponenten Direkt
Tabellenname als Parameter für Stored Procedure
Hallo!
Ich habe folgende Stored Procedure programmiert.
SQL-Code:
Aber anstatt den die übergebene Datenbank zu benutzen erhalte ich immer die Fehlermeldung...
DROP PROCEDURE IF EXISTS `CALC` $$
CREATE PROCEDURE `CALC`(IN BASE VarCHAR(20)) BEGIN DECLARE done BOOLEAN DEFAULT FALSE; ... DECLARE cur1 CURSOR FOR SELECT ID, Betrag, EIN_AUS, Saldo, Kontonummer FROM BASE GROUP BY ISAMKey_2 ASC; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = TRUE; ... Datenbank "Base" nicht gefunden... Aufruf ist CALC('MeineDatenbank'); Wo ist der Trick? Grsse Mavarik :mrgreen: |
Re: Tabellenname als Parameter für Stored Procedure
Moin,
eine evtl. überflüssige Frage, aber bist du dir sicher das die DB Base heißt? Edit: Kurz vor Feierabend, Müll geschrieben, sorry...^^ |
Re: Tabellenname als Parameter für Stored Procedure
Zitat:
@Mavarik: Also bei Firebird würde ich einen Doppelpunkt vor BASE machen. ==> FROM :BASE ... Allerdings kann das bzgl. MySQL völliger Schwachsinn sein. |
Re: Tabellenname als Parameter für Stored Procedure
Zitat:
|
Re: Tabellenname als Parameter für Stored Procedure
Die wenigsten DBMS unterstützen Parameter für Tabellen usw.
|
Re: Tabellenname als Parameter für Stored Procedure
Zitat:
Bedeutet geht oder geht nicht bei MySQL? Mavarik |
Re: Tabellenname als Parameter für Stored Procedure
Hallo,
also eine Suche bei Google war wohl zu einfach ? ;) "mysql stored procedure table as parameter" ![]() Heiko |
Re: Tabellenname als Parameter für Stored Procedure
|
Re: Tabellenname als Parameter für Stored Procedure
Tja Danke für die Links...
Aber wie funktioniert das mit
SQL-Code:
Dann kommt der Fehler beim CURSOR DELCLARE...
SET @BASENAME = CONCAT("SELECT ID, Betrag, EIN_AUS, Saldo, Kontonummer FROM ",BASE,"GROUP BY ISAMKey_2 ASC"
DECLARE cur1 CURSOR FOR @BASENAME; Und PREAPRE und DECLARE kann ich nicht zuordnen.... Mavarik |
Re: Tabellenname als Parameter für Stored Procedure
Hallo,
Ein Bsp aus meinem Link
SQL-Code:
DELIMITER $$
DROP PROCEDURE IF EXISTS `eduplan`.`GetStakeholder`$$ CREATE PROCEDURE `eduplan`.`GetStakeholder`(usingtable varchar(255), usingid varchar(255), identifier varchar(255)) BEGIN SET @qry = CONCAT('SELECT * FROM ', usingtable, ' WHERE ', usingid,' = ?'); PREPARE stmt1 FROM @qry; SET @c = identifier; EXECUTE stmt1 USING @c; DEALLOCATE PREPARE stmt1; END$$ DELIMITER ; Oder so
SQL-Code:
declare @mySql varchar(220)
set @mysql = 'select customerid from customers' exec ('DECLARE cur CURSOR FOR ' + @mysql) Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 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