2012-11-09 31 views
0

这是我的SQL代码来生成一个批处理文件在最后一行打印文字“执行;” - 行总是不同的数量

SELECT 'CANCEL_TRANS trans WITH serial = "' 
    || serial 
    || '" , short_name = "' 
    || short_name 
    || '";' 
FROM trans 
WHERE ((trans.status = 0)) 
    AND TO_TIMESTAMP (time_created, 'YYYY/MM/DD-HH24:MI:SS.FF') < 
      SYSDATE - 1/24 
    AND platform_name LIKE '%test%'; 

输出

(永远目前存在的行数)

CANCEL_TRANS trans WITH serial = "507760" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507761" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507781" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507782" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507785" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507786" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507880" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507883" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507884" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507886" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507976" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507964" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507967" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507971" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "507762" , short_name = "BD"; 
CANCEL_TRANS trans WITH serial = "508096" , short_name = "BD"; 

我希望在最后打印排这个字符串/文字。想做到这一点与SQL(不是shell脚本):

execute; 
+0

在结尾处加上这样的:工会选择“执行;”来自双 – wxyz

+0

谢谢。就是这样。相当明显。 –

回答

2

使用UNION ALL

SELECT ... 
UNION ALL 
SELECT 'execute;' from dual 
+2

UNION可以对行进行排序,因为它充当DISTINCT。使用UNION ALL或ORDER BY更安全。 –

+0

@VincentMalgrat:谢谢,修正。 –

0

您使用此代码:

SELECT top 1 'CANCEL_TRANS trans WITH serial = "' || serial 
       || '" , short_name = "' || short_name || '";' 
    FROM trans 
WHERE trans.status = 0 
    AND TO_TIMESTAMP(time_created, 'YYYY/MM/DD-HH24:MI:SS.FF') < SYSDATE - 1/24 
    AND platform_name LIKE '%test%' order by serial desc; 
+2

1. TOP不是Oracle指令。 2.请使用格式化工具(这是您的第一个答案,您可以使用编辑链接更正您的答案)。 –