如何在MySQL存储过程中获取循环值?

时间:2012-01-03 12:50:58

标签: mysql stored-procedures foxpro

FOR I = 1 TO 10
    tRESNUM = ALLTRIM(STR(I))
    tRESCAS = 'tRESCAS'+tRESNUM         

    &tRESCAS = 0.00

ENDFOR    

我正在将这个fox-pro代码转换为MySQL存储过程。

在Foxpro中,tRESCAS ='tRESCAS'+ tRESNUM给出tRESCAS1,tRESCAS2,.. 和& tRESCAS给出的值是tRESCAS1或tRESCAS1或......其他。

例如

if I =1 =>

FOR I = 1 TO 10
        tRESNUM = ALLTRIM(STR(1))
        tRESCAS = 'tRESCAS'+1       

        tRESCAS1 = 0.00         
ENDFOR

If I =2 =>

FOR I = 1 TO 10
        tRESNUM = ALLTRIM(STR(2))
        tRESCAS = 'tRESCAS'+2       

        tRESCAS2 = 0.00         
ENDFOR

& tRESCAS自动采用tRESCAS值tRESCAS1或tRESCAS2。

在存储过程中如何获得此类值? (是存储过程中的任何特殊变量,例如& this?)

这个细节够了吗?。

1 个答案:

答案 0 :(得分:3)

看看这个程序 -

PROCEDURE procedure1()
BEGIN

  DECLARE tRESCAS VARCHAR(255) DEFAULT '';
  DECLARE i INT DEFAULT 0;

  DROP TEMPORARY TABLE IF EXISTS t;
  CREATE TEMPORARY TABLE t(num INT, column1 VARCHAR(255));

  WHILE i < 10 DO
    INSERT INTO t VALUES(i, CONCAT('tRESCAS', i));
    SET i = i + 1;
  END WHILE;

  -- Try to get fifth value
  SELECT column1 FROM t WHERE num = 5;

END

所有值都存储在临时表中。

执行程序:

CALL procedure1;
+----------+
| column1  |
+----------+
| tRESCAS5 |
+----------+