Definition
/**
* Declare a server-side cursor for a query.
*
* Cursors must be declared within a transaction and provide memory-efficient
* iteration over large result sets via FETCH commands.
*
* Example with query builder:
* declare_cursor('my_cursor', select(star())->from(table('users')))->noScroll()
* Produces: DECLARE my_cursor NO SCROLL CURSOR FOR SELECT * FROM users
*
* Example with raw SQL:
* declare_cursor('my_cursor', 'SELECT * FROM users WHERE active = true')->withHold()
* Produces: DECLARE my_cursor NO SCROLL CURSOR WITH HOLD FOR SELECT * FROM users WHERE active = true
*
* @param string $cursorName Unique cursor name
* @param SelectFinalStep|SqlQuery|string $query Query to iterate over
*/
declare_cursor(string $cursorName, SelectFinalStep|SqlQuery|string $query) : DeclareCursorOptionsStep