gpt4 book ai didi

sql - 从 Ruby on Rails 调用数据库过程

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:57 26 4
gpt4 key购买 nike

我正在使用 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 命令时返回“真实”响应。

是否有可能获得作为请求数据数组的响应,我该怎么做?

我正在尝试在数据库中执行过程,而不是在 Rails Controller 中创建循环。

最佳答案

所以我完全忘记了这一点,但我不久前解决了这个问题,这是我所做的示例:

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}]

希望对您有所帮助。

关于sql - 从 Ruby on Rails 调用数据库过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22703474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com