我正在嘗試創建一個存儲過程,該過程將佔用50個字節的字符串,並一次掃描一個字節,以查找逗號。一旦發現我想更新一個字段,然後繼續掃描字符串以查找其他逗號。使用Firebird數據庫的存儲過程中的錯誤
我正在使用Firebird數據庫並使用DBVisualizer
來開發代碼。
@delimiter ++;
CREATE PROCEDURE scan_for_comma(
lastname_field CHAR(50),
sr_bold_id int
)
RETURNS (
comma_flag varchar(1))
AS
declare variable max_bytes inv default 50;
declare variable I integer;
BEGIN
I = 0;
While
(I <= max_bytes)
DO
Begin
if (substring(name_field from I for 1) = ',') then
Begin
comma_flag = 'Y'
I = I +1
UPDATE sr_address
SET lastname = (substring(name_field from i for 1) = ' ')
WHERE bold_id = :sr_bold_id
end
ELSE
(substring(name_field from loop_cnt for 1) != ',') then
Begin
I = I +1
END
END
END
++
@delimiter ;++
我得到這個錯誤
14時45分34秒[@DELIMITER - 0行(S),0.000秒]
命令處理
14時45分34秒[CREATE - 0行,0.000秒]
[錯誤代碼:335544569,SQL狀態:HY000]
GDS異常。 335544569.
動態SQL錯誤SQL錯誤代碼= -104令牌未知 - 第21行,第12欄 十四時45分34秒[@DELIMITER - 0行(S),0.000秒]
命令處理...
3執行的語句(多個),0行(或多個)受影響的,EXEC /提取時間:0.000/0.000秒
[2成功,0的警告,1個錯誤]
任何幫助/方向將不勝感激。
非常感謝。
什麼是「loop_cnt」?它是可變的嗎?然後在哪裏宣佈和設置? –