我需要查找一个字符串值是否存在于我的表中的任何列中。
有可能在Firebird中创建自动过程或查询来执行此操作,而不必显式指定列名吗?
可以使用以下查询查找列名:
select RDB$RELATION_FIELDS.rdb$field_name as NC from RDB$RELATION_FIELDS where RDB$RELATION_FIELDS.rdb$relation_name = MY_Table_name 我想在Firebird中使用类似的过程:
我已经创建了正确的SQL字符串来进行搜索。 现在,如果我执行这个Firebird过程,它会返回SQL命令作为字符串。
有没有自动执行返回的select语句的方法?
可以使用以下查询查找列名:
select RDB$RELATION_FIELDS.rdb$field_name as NC from RDB$RELATION_FIELDS where RDB$RELATION_FIELDS.rdb$relation_name = MY_Table_name 我想在Firebird中使用类似的过程:
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命令作为字符串。
有没有自动执行返回的select语句的方法?