我需要查找某個字符串值是否存在於我的表的任何列中。 有可能在Firebird中創建自動過程或查詢來執行此工作而不顯示列名稱?火鳥搜索並在所有列中查找字符串值
列名可以使用此查詢來發現:
選擇RDB $ RELATION_FIELDS.rdb $ FIELD_NAME爲NC從 RDB $ RELATION_FIELDS其中RDB $ RELATION_FIELDS.rdb $ relation_name = MY_TABLE_NAME
我會用類似於火鳥過程..
任何人都可以幫助我嗎?
- 編輯
SET TERM ^^ ;
CREATE PROCEDURE P_FINDSTRINGINTABLE (
STRTOFIND VarChar(255),
TBLNAME VarChar(255))
returns (
SQLCOMMAND VarChar(25000))
AS
DECLARE VARIABLE condSTR VARCHAR(8000);
DECLARE VARIABLE columnName VARCHAR(8000);
begin
sqlCommand = 'select * from '|| upper(:TBLNAME);
condSTR = '';
for select RDB$RELATION_FIELDS.rdb$field_name as NC from RDB$RELATION_FIELDS where RDB$RELATION_FIELDS.rdb$relation_name = upper(:TBLNAME)
into :columnName
do begin
condSTR = condSTR||columnName||' LIKE ''%'||STRTOFIND||'%'' OR ';
end
IF (CHAR_LENGTH(condSTR) > 0) THEN
begin
condSTR = ' where ' || left(condSTR, CHAR_LENGTH (condSTR)-3) || ';';
sqlCommand = sqlCommand|| condSTR;
end
ELSE sqlCommand = sqlCommand||';' ;
end ^^
SET TERM ; ^^
好吧......我創造了我的搜索正確的SQL字符串。 現在..如果我執行這個Firebird過程它返回SQL命令作爲字符串。
是否有方法自動執行返回的選擇?
您可以使用執行語句並將字符串傳遞給它http://www.firebirdsql.org/refdocs/langrefupd21-psql-execstat.html – Mariuz
如果我使用執行字符串(我的變量「sqlCommand」)火鳥提出的按照異常「ISC錯誤代碼:335544928」 – Danilo
但是返回字符串是正確的。我也試過這在SQL外殼:EXECUTE STATEMENT(EXECUTE PROCEDURE P_FINDSTRINGINTABLE('str','myTable'))但不工作。 :( – Danilo