首页 > 解决方案 > 如何在 Firebird 2.5 的过程定义中使用非 ASCII 字符/错误“格式错误的字符串”

问题描述

我尝试在 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 中不起作用,我该怎么做才能避免该错误?

标签: firebirdfirebird2.5

解决方案


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


推荐阅读