Как получить значение цикла в хранимой процедуре MySQL? - PullRequest
0 голосов
/ 03 января 2012
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 Ответ

3 голосов
/ 03 января 2012

Посмотрите на эту процедуру -

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 |
+----------+
...