Cột '' có loại không được hỗ trợ “information_schema.sql_identifier”

Sep 14 2020

Tôi đang cố gắng kiểm tra thủ tục được lưu trữ của mình trong MySQL workbench / j. Tôi gặp lỗi khi cố gắng gọi thủ tục được lưu trữ.

Tôi đã tạo một bảng để lưu trữ kết quả của quy trình đã lưu trữ của mình

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

Đây là thủ tục được lưu trữ của tôi:

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

Đây là cách tôi gọi thủ tục được lưu trữ của mình trong SQL workbench / j:

call sp_getdistschema();

Kết quả:

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.

Trả lời

user9601310 Sep 14 2020 at 14:27

Cấu trúc SELECT ... INTO được sử dụng để lưu trữ một kết quả truy vấn thành các biến. Có vẻ như bạn đang thực sự cố gắng điền trực tiếp vào distTable. Hãy thử cái này thay thế:

Cập nhật: Khi xử lý lược đồ thông tin trong Redshift / PostgreSQL, bạn dường như cần chuyển đổi kiểu dữ liệu cột bằng CAST:

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