Wracam do aktualizowania tej strony, zaczynam od tematu związanego z bazami danych Firebird. Porównując poprawność danych w dwóch bazach chciałem sprawdzić ile każda baza zawiera rekordów.
Można to sprawdzić ręcznie, można wymyślić zapytanie albo zlecić to chatowi GPT :)
Zleciłem: „Jak w bazie danych Firebird 4.0 sprawdzić ile rekordów zawiera każda z tabel?”
No i po kilku wskazówkach uzyskałem satysfakcjonującą mnie odpowiedź:
SET TERM ^ ;
CREATE OR ALTER PROCEDURE COUNT_RECORDS
RETURNS (TABLE_NAME VARCHAR(31), RECORD_COUNT INT)
AS
DECLARE VARIABLE DYNAMIC_SQL VARCHAR(255);
BEGIN
FOR SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_SOURCE IS NULL INTO :TABLE_NAME
DO
BEGIN
DYNAMIC_SQL = 'SELECT COUNT(*) FROM ' || :TABLE_NAME;
EXECUTE STATEMENT (:DYNAMIC_SQL) INTO :RECORD_COUNT;
SUSPEND;
END
END^
SET TERM ; ^
A później już tylko:
SELECT * FROM COUNT_RECORDS;
No i mamy to:

ps.
Obrazek wyróżniający też wygenerowała sztuczna inteligencja ;)
