我有一个返回字符串的firebird存储过程sp_clinic_id。它可以很好地编译和执行。Sp的身体里有一个悬浮物。
因此,我使用select out1 from sp_clinic_id()从php pdo中调用该过程。
代码如下:
$sqlproc = "select out1 from SP_CLINIC_ID()";
// execute the stored procedure
$stmt = $pdo->prepare($sqlproc);
$stmt->execute();pdo->prepare返回的不是准备好的语句,而是false。
错误是"Dynamic Sql error -104.Token Unknown“。由于该过程可以在firebird中正常编译和执行,因此我无法理解为什么会出现动态Sql错误。
下面是存储过程的定义:
CREATE PROCEDURE SP_CLINIC_ID
RETURNS(
MAXID VARCHAR(10))
AS
DECLARE VARIABLE temp_char CHAR(10);
DECLARE VARIABLE temp_id INTEGER;
BEGIN
/* Procedure body */
select MAX(CLINIC_id) from COVER_SHEET into MAXID;
select SUBSTRING(:MAXID from 4 for CHAR_LENGTH(:MAXID))
from rdb$database into temp_char ;
select cast(:temp_char as NUMERIC) from rdb$database into temp_id;
temp_id = temp_id + 1;
if ( temp_id < 10) THEN
BEGIN
maxid = 'REG000000'|| temp_id;
END
else if ( temp_id < 100) THEN
begin
maxid = 'REG00000'|| temp_id;
end
else if ( temp_id < 1000) THEN
begin
maxid = 'REG0000'|| temp_id;
end
else if ( temp_id < 10000) THEN
begin
maxid = 'REG000'|| temp_id;
end
ELSE if ( temp_id < 100000 ) THEN
begin
maxid = 'REG00'|| temp_id;
end
ELSE if ( temp_id < 1000000) THEN
begin
maxid = 'REG0'|| temp_id;
end
ELSE if ( temp_id < 10000000) THEN
begin
maxid = 'REG'|| temp_id;
end
SUSPEND;
END;发布于 2016-11-21 20:23:35
当我尝试安装火鸟并检查时,当我在没有page_size的情况下提供时,我得到了类似下面的错误
动态SQL错误-错误代码104
创建数据库'f:\firebird_db\test.fdb‘page_size 8192;//没有错误
创建数据库'f:\firebird_db\test1.fdb';//返回错误
用户'SYSDBA‘密码'masterkey';
我要澄清的是,您是否可以操作其他数据库操作,如简单地从表中获取行等。

因此,固定页面大小可以帮助您,
https://stackoverflow.com/questions/40358203
复制相似问题