Stored procedures 需要teradata中的递归查询和存储过程

Stored procedures 需要teradata中的递归查询和存储过程,stored-procedures,while-loop,teradata,teradata-sql-assistant,Stored Procedures,While Loop,Teradata,Teradata Sql Assistant,我将下面的excel存储在一个表中,在这个表中,我需要使用tera数据存储过程和tera数据中的递归函数来搜索一些模式。我已经写了一个查询,但它是一个无休止的循环。请帮我做这个 Fruit_name Type Schedule Orange Equal to Banana pineapple Equal to Straberry Banana Equal to

我将下面的excel存储在一个表中,在这个表中,我需要使用tera数据存储过程和tera数据中的递归函数来搜索一些模式。我已经写了一个查询,但它是一个无休止的循环。请帮我做这个

Fruit_name      Type              Schedule

Orange          Equal to           Banana
pineapple       Equal to         Straberry
Banana          Equal to           Lichi
Lichi           direct          pineapple
因此,我将编写的脚本基本上从FROUTNAME=Orange开始,检查列类型是否有直接值,如果没有第三列,即schedule中的任何值都将在FROUT name中再次检查,即banana将b第二次检查FROUT_name列,循环将继续,直到列2有一个值价值观“直接”。因此,在上面的例子中,循环将运行3次,当水果是荔枝时,循环停止。因为lichi的类型是direct,循环结束

下面是我写的程序

请帮我做这个

    CREATE PROCEDURE fruit_name(OUT VAR5 Varchar(20)) 
    BEGIN 
    DECLARE VAR_TYPE VARCHAR (20);
    DECLARE VAR_TYPE1 VARCHAR (20);
    DECLARE VAR_SCHEDULE VARCHAR (20);

   select type  into VAR_TYPE from test_table where fruit_name='Orange';
   select SCHEDULE  into VAR_SCHEDULE from test_table where fruit_name='Orange';
   while(Type<>'Direct') do
   BEGIN


    select  type  into VAR_TYPE from test_table where fruie_name=VAR_SCHEDULE;
    select  schedule  into VAR_TYPE1 from TSSC10W.test_table where 
    fruit_name=VAR_SCHEDULE;
    set VAR_SCHEDULE=VAR_TYPE1;


    END;

    END while; 


    set VAR5=VAR_SCHEDULE;


END;
创建过程名称(OUT VAR5 Varchar(20))
开始
声明varu类型VARCHAR(20);
声明VAR_TYPE1 VARCHAR(20);
声明VAR_附表VARCHAR(20);
从test_表中选择type到VAR_type,其中fruit_name='Orange';
从test_表中选择计划进入VAR_计划,其中fruit_name='Orange';
while(键入'Direct')do
开始
从test_表中选择type into VAR_type,其中fruie_name=VAR_SCHEDULE;
从TSSC10W.test_表中选择VAR_类型1中的计划,其中
水果名称=变量表;
设置变量计划=变量类型1;
结束;
结束时;
设置VAR5=VAR_计划;
结束;
我也需要使用递归函数编写相同的循环


帮助欣赏

您当前的逻辑是正确的,可能有一些坏数据…我写的逻辑在无休止的循环中,这就是我没有得到任何O/PAgain的原因,您的逻辑正确地遍历了数据,但一定有一些坏数据,要么没有最终的
'Direct'
,要么有一个类似
orange->banana->lichi->orange
的反向引用。您好,您能帮我在递归函数中更改它吗?对于递归,您需要知道从哪里开始,即您需要一个种子查询,返回第一级
orange