PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Co oznacza kod następujący po CREATE FUNCTION będącym ciągiem znaków?

PostgreSQL jest bardzo rozszerzalny i możesz na przykład zdefiniować własny język proceduralny do pisania funkcji.

PostgreSQL nie wie nic o języku poza tym, że musi wywołać określony obsługę języka aby wykonać funkcję.

Sposób, który został wybrany do zaimplementowania tego, polega na uproszczeniu przekazywania kodu jako ciągu.

To tylko szczegół implementacji i nie sprawia, że ​​funkcje PostgreSQL są mniej lub bardziej podatne na wstrzyknięcie SQL niż inne RDBMS.

Istnieje kilka poziomów, na których musisz bronić się przed wstrzyknięciem:

  • Argumenty funkcji:Tutaj powinieneś wybrać niełańcuchowe typy danych, kiedy tylko jest to możliwe.

  • Instrukcje SQL w funkcji:W tym przypadku należy unikać dynamicznego SQL, gdy tylko jest to możliwe, a jeśli musisz użyć dynamicznego SQL, należy wstawić zmienne za pomocą %L wzorzec format funkcja.

Znowu jest tak samo, jeśli ciała funkcji są określone jako ciągi lub nie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja PostgreSQL zwracająca wiele zestawów wyników

  2. GROUP BY w klauzuli UPDATE FROM

  3. BŁĄD domeny SQL:kolumna nie istnieje, ustawienie domyślne

  4. Jak wybrać powtarzalną liczbę losową z setseed w postgres sql?

  5. Utwórz zagnieżdżony json z postgres zapytania sql 9.4