Ruby DBIでoutput parameter
バージョンやドライバによると思うが、とりあえず手元にある
の組み合わせでは、素ではストアドプロシージャのOUT paramが取れない。
んじゃどーすっかというと、とりあえず相手がSQL Serverの場合のworkaround例。
# conはConnection stmt = con.prepare(<<EOS) BEGIN DECLARE @out1 hogetype EXEC ANY_STORED_PROC ?, ?, @out1 OUTPUT SELECT @out1 END EOS stmt.execute(inp1, inp2) stmt.fetch_array # -> [out1]
要は、
- OUTパラメータを一旦変数で受けて、SELECTで返させる
- SQL Serverの場合、ステートメントは改行区切り(なのでヒアドキュメントで書いちまえば楽)
ってとこがわちき的ポイント。