firebird - 如何在 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 中不起作用,我该怎么做才能避免该错误?
解决方案
“SET NAMES”命令必须在“CREATE DATABASE”或“CONNECT”命令之前使用才能生效。此外,其中的字符集必须与脚本的真实编码完全匹配。
推荐阅读
- python - Python 3.7.3:我收到 SyntaxError:关键字不能是表达式
- php - 如何在 PHP 包中访问 Doctrine?
- scala - 从hdfs读取json数据时如何修复flink中的“NoMatchingTableFactoryException”错误
- android - 无法单击android AVD中的按钮
- php - AWS返回一个私有对象,我怎样才能将其公开?
- sql - 为什么“CURRENT_TIMESTAMP”在 SQL 中显示错误的时间?
- javascript - Jquery滚动没有触发任何东西
- android - 如何使卡片视图消失?
- angular - ng build 和 ng build --watch 之间的捆绑输出不一致
- postgresql - 在主机上的客户端 docker 和 postgres 服务器之间连接