@@ -160,6 +160,50 @@ func ktSQLTmpl(w io.Writer, dot core.KtTmplCtx) error {
160
160
_ , _ = io .WriteString (w , "\n }" )
161
161
_ , _ = io .WriteString (w , "\n }" )
162
162
}
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
+ }
163
207
if dot .Cmd == ":exec" {
164
208
if eval := dot .Comments ; len (eval ) != 0 {
165
209
_ , _ = io .WriteString (w , "\n " )
0 commit comments