MonetDB在函数中准备语句

时间:2015-08-03 18:29:26

标签: sql monetdb

我正在尝试创建一个函数,该函数接受列,表,限制和偏移量的参数。基本上,我希望能够从指定列的指定表中获取指定数量的行数据。

但是,我无法使用以下代码 - 我收到了一些错误,例如:

syntax error, unexpected SELECT, expecting ':' in: "create function get_banana(lim int, off int, tbl varchar(32), col varchar(32)) r"
syntax error, unexpected RETURN in: "return"
syntax error, unexpected END in: "end"

这些错误似乎毫无意义。

我的代码如下:

CREATE FUNCTION GET_BANANA(lim int, off int, tbl varchar(32), col varchar(32)) 
RETURNS TABLE (clm int) 
BEGIN 
    PREPARE SELECT col FROM tbl LIMIT ? OFFSET ?; 
    RETURN EXEC (lim, off); 
END;

我很感激任何帮助:)谢谢!

2 个答案:

答案 0 :(得分:0)

我至少看到两个问题

  • 1 Jan Jame O'Leary Bill ... 需要EXEC返回的标识符,例如:

    PREPARE
  • 函数参数sql>prepare select * from tables; execute prepared statement using: EXEC 2(...) sql>exec 2(); tbl是字符串值。您不能将它们用作表/列标识符。

话虽如此,我甚至不确定col是否可以在函数中使用。

答案 1 :(得分:0)

不,PREPARE是顶级语句修饰符。