@@ -79,6 +79,7 @@ defmodule Tds.Protocol do
7979
8080 def handle_execute ( % Query { statement: statement } = query , params , opts , % { sock: _sock } = s ) do
8181 params = opts [ :parameters ] || params
82+ s = if opts [ :proc ] , do: Map . put_new ( s , :proc , opts [ :proc ] ) , else: s
8283
8384 if params != [ ] do
8485 send_param_query ( query , params , s )
@@ -380,6 +381,21 @@ defmodule Tds.Protocol do
380381 # {:ok, %{s | statement: nil, state: :ready}}
381382 #end
382383
384+ def send_param_query ( % Query { handle: handle } = _query , params , % { proc: proc } = s ) do
385+ params = Tds.Parameter . prepare_params ( params )
386+ # msg = msg_rpc(proc: :sp_executesql, params: params)
387+ msg = msg_rpc ( proc: proc , params: params )
388+
389+ case msg_send ( msg , s ) do
390+ { :ok , % { result: result } = s } ->
391+ { :ok , result , % { s | state: :ready } }
392+ { :error , err , % { transaction: :started } = s } ->
393+ { :error , err , % { s | transaction: :failed } }
394+ err ->
395+ err
396+ end
397+ end
398+
383399 def send_param_query ( % Query { handle: handle } = _query , params , % { transaction: :started } = s ) do
384400 params = [
385401 % Tds.Parameter { name: "@handle" , type: :integer , direction: :input , value: handle }
0 commit comments