Столбец "" имеет неподдерживаемый тип "information_schema.sql_identifier"

Sep 14 2020

Я пытаюсь протестировать свою хранимую процедуру в MySQL workbench / j. Я получаю сообщение об ошибке при попытке вызвать хранимую процедуру.

Я создал таблицу для хранения результатов моей хранимой процедуры

CREATE TABLE IF NOT EXISTS ableok 
(
  name VARCHAR(50) ENCODE lzo
 );

Это моя хранимая процедура:

CREATE OR REPLACE PROCEDURE sp_GetDistSchema()
AS '
BEGIN
  SELECT table_schema INTO ableok FROM information_schema.tables;
 END;
 '
LANGUAGE plpgsql;

Вот как я вызываю свою хранимую процедуру в SQL workbench / j:

call sp_getdistschema();

Результат:

An error occurred when executing the SQL command:
call sp_getdistschema()

[Amazon](500310) Invalid operation: Column "table_schema" has unsupported type "information_schema.sql_identifier".; [SQL State=0A000, DB Errorcode=500310]
1 statement failed.

Ответы

user9601310 Sep 14 2020 at 14:27

Структура SELECT ... INTO используется для хранения результата запроса в переменных. Похоже, что вы действительно просто пытаетесь напрямую заполнить distTable. Попробуйте вместо этого:

Обновление: при обработке информационной схемы в Redshift / PostgreSQL вам, по-видимому, необходимо преобразовать типы данных столбца с помощью CAST:

CREATE OR REPLACE PROCEDURE sp_GetDistSchema()
BEGIN
  INSERT INTO distTable SELECT DISTINCT CAST(table_schema AS VARCHAR) FROM information_schema.tables;
END;