如何在 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”命令才能生效。此外,其中的字符集必须与脚本的实际编码完全匹配。
我尝试在 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”命令才能生效。此外,其中的字符集必须与脚本的实际编码完全匹配。