如何在 Firebird 2.5 的过程定义中使用非 ASCII 字符/错误 "Malformed string"

How to use non-ASCII-chars in procedure definitions in Firebird 2.5 / error "Malformed string"

我尝试在 Firebird 2.5.9 中创建一个包含非 ASCII 字符的过程,但我总是收到以下错误:

Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-STORE RDB$PROCEDURES failed
-Malformed string

这是我正在尝试做的事情:

isql -user admin -password masterkey

create database "chartest.fdb" default character set win1252

SET NAMES WIN1252;

SET TERM ^ ;
CREATE PROCEDURE PROC_VAL_TO_TEXT (AVAL INTEGER )
RETURNS (RESULT VARCHAR(20) ) AS
begin
  if (aval = 0) then
    result = 'natürlich';
  else
    result = 'niemals';
  suspend;
end^
SET TERM ; ^

在 Firebird 2.0 中,这工作正常。为什么这在 2.5 中不起作用?我该怎么做才能避免错误?

必须在“CREATE DATABASE”或“CONNECT”命令之前使用“SET NAMES”命令才能生效。此外,其中的字符集必须与脚本的实际编码完全匹配。