我想在postgresql函数中打印表的列值。我创建了一个功能如下:-
CREATE OR REPLACE FUNCTION print_col() RETURNS VOID AS $$
DECLARE
row TABLE%ROWTYPE;
BEGIN
FOR row IN
SELECT col1 FROM TABLE
LOOP
RAISE NOTICE '%', row.col1;
END LOOP;
END;
$$ LANGUAGE plpgsql;在执行查询时,我得到的错误是:“CE_GFS”类型的无效输入语法
我找不到可能是什么问题
发布于 2022-10-03 09:00:53
当您声明一个类型为TABLE%ROWTYPE的变量时,它是一个可以容纳完整的TABLE行的行型。当您稍后尝试将同一表的特定列分配到变量(SELECT col1 FROM TABLE)时,它会尝试按顺序分配它们。
因此,这个FOR row实际上意味着您试图用col1类型为与TABLE的第一列具有相同类型的变量分配一个值。
在这种情况下,错误消息:
类型数字的输入语法无效:"CE_GFS“
指示col1包含字符串,但TABLE的第一列为数字列。
如果您真的打算对单个值进行迭代,请将row TABLE%ROWTYPE;替换为:
row TABLE.col1%TYPE;并将您的使用替换为:
RAISE NOTICE '%', row;您还可能希望给row取一个不同的名称,以明确它只包含一个字符串。
https://stackoverflow.com/questions/73932469
复制相似问题