Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dynamiczne nazwy tabel w funkcji procedury składowanej

Jeśli chcesz zbudować instrukcję SQL przy użyciu identyfikatorów, musisz użyć przygotowanych instrukcji; ale przygotowanych instrukcji nie można używać w funkcjach. Możesz więc utworzyć procedurę składowaną z parametrem OUT -

CREATE PROCEDURE getName
 (IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50))
BEGIN

  SET @GetName =
    CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE id=', myId);
  PREPARE stmt FROM @GetName;
  EXECUTE stmt;

  SET myName = @var1;
END

Na przykładzie -

SET @tableName = 'tbl';
SET @myId = 1005;
SET @name = NULL;
CALL getName(@tableName, @myId, @name);
SELECT @name;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite - ORDER BY RAND()

  2. Transformacja wiersza do kolumny w MySQL

  3. INDEKS UPUSZCZENIA MySQL

  4. Jak utworzyć bazę danych MySQL za pomocą interfejsu wiersza poleceń (CLI)

  5. Najbardziej wydajny sposób wstawiania wierszy do bazy danych MySQL