我正在使用Ruby on Rails和NuoDB开发应用程序,我正在尝试从数据库调用过程。我正在使用Rails控制台测试它,但当我使用以下命令调用它时,我只得到"TRUE"响应。
ActiveRecord::Base.connection.execute("CALL SHOW_FEEDBACKS_PRC( 'form_name' )")
我的存储过程是:
CREATE PROCEDURE database_name.show_feedbacks_prc (IN P_IN_form string)
returns tmp_feedbacks (txt1 string, rating integer, comment string, created_at timestamp, updated_at timestamp)
language sql
security invoker
as
insert into tmp_feedbacks
select txt1, rating, comment, created_at, updated_at
from database_name.feedbacks
where form = p_in_form;
END_PROCEDURE
这是一个简单的查询,只返回一个特定"表单"下的"反馈"列表。
当我使用NuoDB的控制台并返回一个显示所请求数据的表时,该过程有效,但是当我使用Rail的控制台调用它时,它只会在我执行SQL命令时返回"true"响应。
是否有可能获得响应作为请求数据的数组,我如何做到这一点?
我试图在数据库内执行程序,而不是在rails控制器内进行循环。
我完全忘记了这个问题,但我解决了这个问题,这里是我所做的一个例子:
SAMPLE_PROCEDURE:
CREATE PROCEDURE sample_procedure ( IN input_1 INTEGER )
RETURNS return_msg ( col_1 STRING , col_2 INTEGER ) AS
VAR value_string STRING;
VAR value_integer INTEGER;
value_string = input_1;
value_integer = input_1+10;
INSERT INTO return_msg VALUES ( value_string , value_integer);
RETURN;
END_PROCEDURE
我是这样称呼它的:
ActiveRecord::Base.connection.execute("call sample_procedure(1)")
Rails将返回以下内容:
[{"col_1"=>"1","col_2"=> 11}]