Я написал функцию, которая запрашивает значения x, y, z для создания разделов с R. Теперь я хочу сделать это с PL/R, вместо использования RStudio.Как определить переменные в функции PL/R (plr) как параметры для запроса внутри
CREATE OR REPLACE FUNCTION section_graph() RETURNS text AS
'
require(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host="localhost", user="postgres", password="...", dbname="...", port="5432")
rs <- dbSendQuery(con, "SELECT x,y,z FROM (SELECT (section(1,3)).*) AS foo")
section1 <- fetch(rs, 2000)
dbClearResult(rs)
dbDisconnect(con)
pdf("/tmp/myplot.pdf", width=18, height=9)
plot(section1$y, section1$z, type="l", lwd=1.5, lty=3)
dev.off()
print("done")
'
LANGUAGE 'plr';
В команде dbSendQuery
есть запрос SELECT x,y,z FROM (SELECT (section(1,3)).*) AS foo
. Параметр 1
представляет собой идентификатор, второй - точность сечения (3 м).
Теперь я хочу использовать свою функцию выше, как обычную функцию PostgreSQL (например, с языком «sql»). Это означает, что запрос на покупку для определения параметров в пределах функции, как это:
SELECT x,y,z FROM (SELECT (section($1,$2)).*) AS foo
$1
$2
являются параметрами для моей функции section_graph
.
Возможно ли это на языке «plr»? Я не нашел что-то полезное.
Очевидно, что существуют проблемы с двойными кавычками запроса внутри функции.
Не уверен, что черная дыра все еще является риском, но слайд 8 говорит, что параметры связи будут игнорироваться: http://www.joeconway.com/presentations/plr-PGConfNYC2014.pdf N.b. Я еще не проверял, открывается ли еще одно соединение ... – steevee