1
我試圖創建一個過程來自動化一些查詢,這些查詢是我創建的搜索工具的一部分。如果不能在Firebird存儲過程中正確識別空字符串
create or alter procedure buscaExactPaisSS
(palavra varchar(500))
returns
(seriePK integer)
as
begin
if (:palavra is null or :palavra = '') then
begin
for
select seriesetorial.codserie
from seriesetorial
where codserie not in (select codserie from localidaderelset)
into :seriePK
do
begin
suspend;
end
end
else
begin
for
select seriesetorial.codserie
from seriesetorial, localidade, localidaderelset
where lower(localidade.nome) = lower(:palavra)
and localidaderelset.codlocalidade = localidade.codlocalidade
and seriesetorial.codserie = localidaderelset.codserie
into :seriePK
do
begin
suspend;
end
end
end!
但是,該過程總是返回結果爲第一種情況下,即,當palavra
是null或「」。這是爲什麼?我該如何解決?
編輯 - 16/03/2017:
這個功能實際上是正確的。希望這至少可以作爲FB的PSQL變量使用過程的一個例子。
除了使用':palavra'而不是'palavra'(沒有':'!)),我沒有看到存儲過程有任何明顯的錯誤。你怎麼稱呼它?你可能要仔細檢查你的存儲過程是否真的是你想象的那樣(通過檢查數據庫中的源代碼),也許你用來執行create procedure語句的組件用'null'代替':palavra'。 –
是的,只是意識到這個功能是正確的。感謝您的輸入! – RafaelCruz