Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据动态SQL的IF-else条件在INFORMIX DB中设置变量_Sql_Database_Stored Procedures_Informix - Fatal编程技术网

如何根据动态SQL的IF-else条件在INFORMIX DB中设置变量

如何根据动态SQL的IF-else条件在INFORMIX DB中设置变量,sql,database,stored-procedures,informix,Sql,Database,Stored Procedures,Informix,我已经在Informix DB中创建了一个存储过程。它已成功创建,没有任何错误。 并且毫无差错地执行。 唯一的问题是,它并没有意识到我添加的其他条件是否存在 设cust_qry=cust_qry | | |和pt.parameter4='“| | parIn2 | |”” 请帮助我:( 我在编译和执行存储过程方面没有问题,只是即使我将参数1和参数2传递给存储过程,它也不会进入我提到的if条件 如果parIn2!='',则 设cust_qry=cust_qry | | |和pt.parameter

我已经在Informix DB中创建了一个存储过程。它已成功创建,没有任何错误。 并且毫无差错地执行。 唯一的问题是,它并没有意识到我添加的其他条件是否存在 设cust_qry=cust_qry | | |和pt.parameter4='“| | parIn2 | |””

请帮助我:(

我在编译和执行存储过程方面没有问题,只是即使我将参数1和参数2传递给存储过程,它也不会进入我提到的if条件 如果parIn2!='',则 设cust_qry=cust_qry | | |和pt.parameter4='“| | parIn2 | |””

所以我的查询应该是dynamix,结果查询应该如下 因为我已经通过了巴黎/巴黎2

从X pt,outer X ps选择pt.parameter1,pt.parameter2,pt.parameter3,pt.parameter4,pt.parameter5,pt.parameter6,其中pt.set_no=ps.set_no和pt.parameter1='“| | | | | |”和pt.parameter4='“| | | parIn2 |””

但问题是它只给了我一个疑问

从X pt,outer X ps选择pt.parameter1,pt.parameter2,pt.parameter3,pt.parameter4,pt.parameter5,pt.parameter6,其中pt.set_no=ps.set_no和pt.parameter1='“| | parIn | |”


即使不为null,也不考虑parIn2。请帮助

您可以在定义后添加以下两行,以帮助调试过程

将调试文件设置为“/tmp/trace.log”;跟踪打开


请发布trace.log

您确定您的参数是空字符串而不是null或空格等吗

如果语句:

    CREATE PROCEDURE Table_info
(parIn CHAR(12), parIn2 CHAR(12), parIn3 CHAR(20),parIn4 CHAR(2))
RETURNING CHAR(12) AS paramenter1,CHAR(23) AS parameter2,CHAR(2) AS parameter3,CHAR(12) AS parameter4,CHAR(1) AS parameter5,INTEGER AS parameter6 ;
DEFINE paramenter1 CHAR(12);
DEFINE parameter2 CHAR(22);
DEFINE parameter3 CHAR(2);
DEFINE parameter4 CHAR(12);
DEFINE parameter5 CHAR(1);
DEFINE parameter6 INTEGER;
DEFINE cust_qry   CHAR(1024);
LET cust_qry = "select pt.paramenter1,pt.parameter2,pt.parameter3,pt.parameter4,pt.parameter5,pt.parameter6              from X pt, outer X ps   where pt.set_no = ps.set_no and   pt.paramenter1 = '" || parIn || "' ";

IF    parIn2 = '' THEN
LET cust_qry = cust_qry ;
ELSE
LET cust_qry = cust_qry || "and pt.parameter4 = '"|| parIn2 || "' " ;
END IF;
if parIn3 != '' then 
LET cust_qry = cust_qry ||"and pt.trd_blk_ref = '"|| parIn3 ||"' " ;    
END IF;
if ( parIn4 != '0') then 
LET cust_qry = cust_qry ||"and pt.parameter3 = '"|| parIn4 ||  "' " ;
END IF;

       PREPARE stmt_id FROM cust_qry;
   DECLARE cust_cur cursor FOR stmt_id;
   OPEN cust_cur; 
     WHILE (1 = 1)
     FETCH cust_cur INTO paramenter1, parameter2,parameter3,parameter4,parameter5,parameter6;
     if (sqlcode = 100 ) then exit; end if;
      RETURN paramenter1,parameter2,parameter3,parameter4,parameter5,parameter6 WITH RESUME ;
        end while;
IF parIn2 IS NOT NULL AND TRIM(parIn2) != '' THEN
    LET cust_qry = cust_qry || "and pt.parameter4 = '"|| parIn2 || "' " ;
END IF;