Ruby葡萄POSTGRESQL存储过程
Ruby Grape POSTGRESQL stored procedure
正在尝试执行 procedure/function 存储在 Ruby Grape API 包中的 POSTGRESQL。我的服务器中有函数 getactivesites(),其中 returns 站点名称。
服务器代码:
BEGIN
RETURN QUERY SELECT "SITE_ID",
"SITE_NAME"
FROM public.sites WHERE "ACTIVE_FLAG" = true
ORDER BY "SITE_NAME" ASC ;
END;
ruby代码:
resource :getsites do
desc “Get Active Sites“
get do
results = ActiveRecord::Base.connection.execute("execute getactivesites")
return results
end
我 运行 时得到的错误是“PG::InvalidSqlStatementName:错误:准备好的语句 "getactivesites" 不存在:执行 getactivesites”
尝试 select
而不是 execute
:
ActiveRecord::Base.connection.execute("select getactivesites()")
这是我的真实项目:
Db.execute( 'select my_sp_name( ? )', my_sp_param )
其中 Db 是糖,如:
# -*- frozen-string-literal: true -*-
# Syntax sugar module
module Db
extend self
delegate :transaction, to: ApplicationRecord
def sanitize( *args )
ApplicationRecord.send( :sanitize_sql, args )
end
def execute( *args )
ApplicationRecord.connection.execute( sanitize( *args ) )
end
end
正在尝试执行 procedure/function 存储在 Ruby Grape API 包中的 POSTGRESQL。我的服务器中有函数 getactivesites(),其中 returns 站点名称。
服务器代码:
BEGIN
RETURN QUERY SELECT "SITE_ID",
"SITE_NAME"
FROM public.sites WHERE "ACTIVE_FLAG" = true
ORDER BY "SITE_NAME" ASC ;
END;
ruby代码:
resource :getsites do
desc “Get Active Sites“
get do
results = ActiveRecord::Base.connection.execute("execute getactivesites")
return results
end
我 运行 时得到的错误是“PG::InvalidSqlStatementName:错误:准备好的语句 "getactivesites" 不存在:执行 getactivesites”
尝试 select
而不是 execute
:
ActiveRecord::Base.connection.execute("select getactivesites()")
这是我的真实项目:
Db.execute( 'select my_sp_name( ? )', my_sp_param )
其中 Db 是糖,如:
# -*- frozen-string-literal: true -*-
# Syntax sugar module
module Db
extend self
delegate :transaction, to: ApplicationRecord
def sanitize( *args )
ApplicationRecord.send( :sanitize_sql, args )
end
def execute( *args )
ApplicationRecord.connection.execute( sanitize( *args ) )
end
end