TIB_Script 運行大腳本

海默·諾伯特

我在運行較長的腳本時遇到了 IB_Script 返回錯誤的問題:

SQL 錯誤代碼 = -104 意外的命令行結尾 - 第 18 行,第 52 列

只要腳本中的字符數不超過 65,536 個字符(當前為 66.186 個),就不會出現此類錯誤消息。

我使用以下代碼上傳 IB_Script:

with dm.DDLScript do
    begin
        try
            SQL.Clear;
            SQL.Add('SET TERM ^;');
            SQL.Add(Format('CREATE OR ALTER PACKAGE %s', [ObjectName]));
            SQL.Add('AS');             
            SQL.AddStrings(hdr.Lines); // hdr > TSynEdit

            Execute;
            SQL.Clear;
            
            SQL.Add('SET TERM ^;');
            SQL.Add(Format('RECREATE PACKAGE BODY %s', [ObjectName]));
            SQL.Add('AS');
            SQL.AddStrings(bdy.Lines); // bdy > TSynEdit
            SQL.Add('^');
            Execute;

            ObjectMod := false;
        except
            on e:exception do
            begin
                messageDlg(e.Message, mtError,[mbOk], 0);
                abort;
            end;
        end;
    end; 

有沒有人遇到過類似的問題?不可能以較少的字符數運行腳本,因為它是如圖所示的 PACKAGE BODY。

馬克·羅特維爾

Firebird 2.5 及更早版本僅支持 64KB(65535 字節)的語句,此限制也反映在 fbclient.dll API 中,其中大小為 16 位無符號整數。Firebird 3.0 將限制增加到 10MB,但這需要 Firebird 3.0 或更高版本的 fbclient,並且要么使用新的面向對象 API,要么傳遞長度為零的語句,並將語句文本作為以 NUL 結尾的字符串。

很可能,您使用的庫顯式傳遞了大小,而這個大小溢出,導致 Firebird 只收到一小部分正在發送的語句(或者至少,我猜第 18 行第 52 列的字符數比 65535 少很多)。當 Firebird 收到不完整的語句時,它會產生錯誤“命令意外結束”。

我自己不會對 Delphi 進行編程,但該解決方案需要在庫中進行修改,以將語句傳遞給isc_dsql_prepare大小為 0 並作為 NUL 終止的字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在線運行我的 powershell 腳本?

如何從 Python 腳本運行 nohup 命令?

Python 運行與我的腳本不同的腳本

如何安排從anaconda運行的python腳本?

Shell 腳本應該等到 kubernetes pod 運行

如何與始終運行的 python 腳本通信

以編程方式運行 SQL 腳本

使用 nohup 依次運行多個 python 腳本

如何為在 docker 容器內運行的 corda 節點運行遷移腳本?

當我運行整個腳本時,powrshell 命令不運行

Python InDesign 腳本:如何運行預檢?

啟動後燒瓶運行腳本

沒有 COMMIT 事務的 Python Sqlite3 執行腳本(sql_script)

LUA - 如何停止運行腳本

導入後如何運行腳本?

Linux 腳本無法在 MacOS 上運行

Blazemeter 運行 Jmeter 腳本 - JSR223 腳本中的問題,檢索任務 javax.script.ScriptException: groovy.lang.MissingMethodException

Powershell 運行先前編輯的腳本

在後台運行 Scheme 或 Racket 解釋器來運行腳本

在 Selenium IDE 中運行 JavaScript 腳本

如何在 shell 腳本中運行 sacct 命令

如何選擇 CPU 來運行 python 腳本?

從 VScode 的任何位置運行 Powershell 腳本(基本上是熱鍵 .ps1 腳本)

執行後運行點源腳本時出錯

通過 .bat 從 python 腳本中運行 Python 腳本

為什麼我可以在終端上運行 java,而不是在 shell 腳本上運行,即使 shell 腳本正在使用 sudo 運行?

每次在谷歌表格中運行應用程序腳本時復制新行

我的 Lotto Python 腳本運行正確嗎?

Google Apps 腳本 - 腳本運行兩次?

TOP 榜单

热门标签

归档