2016-04-16 10 views
2
にTdsがライブラリとストアドプロシージャを呼び出す

I次のエラーがエリクサー方法:エリクシール

get_accountが存在するストアドプロシージャのTdsライブラリを使用してストアドプロシージャを呼び出すしようと持ってもらう正確に一つのパラメータ@id

iex(5)>Tds.Connection.query(pid, "get_account",[%Tds.Parameter{name: "@id", value: 1}])               
{:error, 
%Tds.Error{message: nil, 
    mssql: %{class: 16, length: 252, line_number: 0, msg_text: "Procedure or function 'get_account' expects parameter '@id', which was not supplied.", number: 201, proc_name: "get_account", 
    server_name: "localhost\\SQLEXPRESS", state: 4}}} 
iex(6)> 

Tds.proc(pid, "get_account",[1])と、これはどちらか動作しませんしようと

+0

これはおそらく、それはErlangのODBC層に落下し、あなたが何をしようとして行う方が簡単ですこれらのケースの一つです。詳細については、この質問(http://stackoverflow.com/questions/18929391/how-to-call-stored-procedure-taking-array-using-odbcparam-query-in-erlang)を参照してください。 –

答えて

1

回避策:

Tds.query(pid, "get_account 1",[]) 

EXECを使用して、ストアドプロシージャにパラメータを直接渡すのと同じ方法を使用します。

更新日:

をこの形式でも動作します:

params = [ 
    %Tds.Parameter{name: "@1", value: 100, type: :integer}, 
    %Tds.Parameter{name: "@2", value: 100, type: :integer}, 
    %Tds.Parameter{name: "@3", value: <<0 ,0 ,0 ,0>>, type: :binary}, 
] 
    Conn.query(s.db, "save_auth_key @1, @2, @3", params) 
関連する問題