@@ -160,6 +160,50 @@ func ktSQLTmpl(w io.Writer, dot core.KtTmplCtx) error {
160160 _ , _ = io .WriteString (w , "\n }" )
161161 _ , _ = io .WriteString (w , "\n }" )
162162 }
163+ if dot .Cmd == ":iter" {
164+ if eval := dot .Comments ; len (eval ) != 0 {
165+ _ , _ = io .WriteString (w , "\n " )
166+ for _ , dot := range eval {
167+ _ = dot
168+ _ , _ = io .WriteString (w , "\n //" )
169+ _ , _ = io .WriteString (w , dot )
170+ }
171+ }
172+ _ , _ = io .WriteString (w , "\n \n @Throws(SQLException::class)" )
173+ _ , _ = io .WriteString (w , "\n override fun " )
174+ _ , _ = io .WriteString (w , dot .MethodName )
175+ _ , _ = io .WriteString (w , "(iter: (" )
176+ _ , _ = io .WriteString (w , dot .Ret .Name )
177+ _ , _ = io .WriteString (w , ": " )
178+ _ , _ = io .WriteString (w , dot .Ret .Type ())
179+ _ , _ = io .WriteString (w , ") -> Unit" )
180+ if dot .Arg .Args () != "" {
181+ _ , _ = io .WriteString (w , dot .Arg .Args ())
182+ }
183+ _ , _ = io .WriteString (w , ") {" )
184+
185+ _ , _ = io .WriteString (w , "\n return conn.prepareStatement(" )
186+ _ , _ = io .WriteString (w , dot .ConstantName )
187+ _ , _ = io .WriteString (w , ").use { stmt ->" )
188+
189+ _ , _ = io .WriteString (w , "\n " )
190+ _ , _ = io .WriteString (w , dot .Arg .Bindings ())
191+
192+ _ , _ = io .WriteString (w , "\n \n val results = stmt.executeQuery()" )
193+
194+ _ , _ = io .WriteString (w , "\n while (results.next()) {" )
195+ _ , _ = io .WriteString (w , "\n val ret = " )
196+ _ , _ = io .WriteString (w , dot .Ret .ResultSet ())
197+ _ , _ = io .WriteString (w , "\n try {" )
198+ _ , _ = io .WriteString (w , "\n iter(ret)" )
199+ _ , _ = io .WriteString (w , "\n } catch (e: Exception) {" )
200+ _ , _ = io .WriteString (w , "\n throw SQLException(\" error calling iter function at row %d\" .format(results.row), e)" )
201+ _ , _ = io .WriteString (w , "\n }" )
202+ _ , _ = io .WriteString (w , "\n }" )
203+
204+ _ , _ = io .WriteString (w , "\n }" )
205+ _ , _ = io .WriteString (w , "\n }" )
206+ }
163207 if dot .Cmd == ":exec" {
164208 if eval := dot .Comments ; len (eval ) != 0 {
165209 _ , _ = io .WriteString (w , "\n " )
0 commit comments