0

I gespeicherte Prozedur bin writting die Namen und Spaltenname als Parameter und kehrt Wert (Beispiel Aggregatfunktion wird: (‚Summe‘, ‚Alter‘) liefert Wert (SELECT SUM (Alter) FROM myTable))MariaDB passieren Aggregat Funktionsnamen als Parameter für gespeicherte Prozeduren

mein Code:

CREATE PROCEDURE sample (IN name VARCHAR(10), IN col VARCHAR(30), OUT result INT) 
BEGIN 
    SELECT CONCAT(name , '(', col, ') ') INTO result FROM myTable; 
END$ 
+0

Google für "mysql prepared statements" ... – fancyPants

Antwort

0

machen es zu einem FUNCTION und

return CONCAT('SELECT ', name, '(', col, ') FROM myTable;'); 
0

Verwenden Sie Prepared Statements.

CREATE PROCEDURE sample (IN name VARCHAR(10), IN col VARCHAR(30), OUT result INT) 
BEGIN 
    SET @sql := ''; 
    SET @ret := 0; 

    SELECT CONCAT('SELECT ', name, '(', col, ') INTO @ret FROM myTable') INTO @sql FROM DUAL; 
    PREPARE STMT from @sql; 
    EXECUTE STMT; 

    SELECT @ret INTO result FROM DUAL; 

    DEALLOCATE PREPARE STMT;  
END 
Verwandte Themen