sql >> Databáze >  >> RDS >> Mysql

MySQL - Použití výsledků uložených procedur k definování příkazu IN

Jaký typ návratu má vaše aktuální uložená procedura? Mluvíte o „seznamu“, takže TEXT?

Možná existuje jednodušší způsob, ale jedna věc, kterou můžete udělat (uvnitř jiné uložené procedury), je vytvořit další dotaz.

Abychom toho dosáhli, musíme obejít dvě omezení MySQL:a) Chcete-li provést dynamické SQL uvnitř uložené procedury, musí to být připravený příkaz. b) Připravené výpisy lze vytvářet pouze z uživatelských proměnných. Kompletní SQL je tedy:

SET @the_list = myStoredProc();
SET @the_query = CONCAT('SELECT * FROM myTable WHERE columnName IN (' , @the_list , ')');
PREPARE the_statement FROM @the_query;
EXECUTE the_statement;

Pokud mluvíte o vrácení sady výsledků z uložené rutiny a jejím následném použití jako tabulky, není to možné. Chcete-li obejít toto omezení , musíte vytvořit dočasnou tabulku .




  1. Jak používat funkci INSERT...ON CONFLICT (UPSERT) PostgreSQL s flask_sqlalchemy?

  2. Dotaz připojení Nodejs MySQL vrátí hodnotu volání funkce

  3. pdo k načtení dat a naplnění záznamu

  4. Vraťte odpověď JSON z dotazu MySQL