从Ruby on Rails调用数据库过程



我正在使用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}]

最新更新