Using WITH Clause to mimic App Engine Temp Tables
来源:互联网 发布:圣剑网络三国神将传 编辑:程序博客网 时间:2024/05/18 00:08
I've been working on an App Engine that makes use of Temp tables and uses the %Table meta-sql. It's sometimes difficult to debug your App Engine SQL because the data in the temp table gets deleted at the end of the run. So I get around this in my SQL client by using the WITH clause
That doesn’t make a lot of sense, so here’s a simple example you can run.
So I’ll turn an App Engine sql statement like this (from the delivered SSR_TSC_LIB App Engine - it's a library used by the Campus Solutions Transcript Generation Process):
into something like this (%Table(SSR_TSC_TMP) changed to NY_SSR_TSC_TMP, %ProcessInstance changed to 0, some %Bind’s removed and the %Bind(INSTITUTION) in the WHERE clause changed to 'ZZZZZ'):
The power of the WITH clause really proves itself out whenever the new dummy table is referenced more than once in your SQL statement.
WITH AS (subquery_sql_statement), AS(sql_statement_from_alias_one)
That doesn’t make a lot of sense, so here’s a simple example you can run.
with NY_SSR_TSC_TMP AS(SELECT '0' PROCESS_INSTANCE, 1 REPORT_REQUEST_NBR, 1 REQUEST_SEQ_NBR, 1 REPORT_NUMBER, '9999991' EMPLID, 'PGT' ACAD_CAREER FROM dualunionSELECT '1' PROCESS_INSTANCE, 1 REPORT_REQUEST_NBR, 1 REQUEST_SEQ_NBR, 1 REPORT_NUMBER, '9999992' EMPLID, 'UG' ACAD_CAREER FROM dual )select * from NY_SSR_TSC_TMP;
So I’ll turn an App Engine sql statement like this (from the delivered SSR_TSC_LIB App Engine - it's a library used by the Campus Solutions Transcript Generation Process):
SELECT Z.REPORT_REQUEST_NBR ,Z.REQUEST_SEQ_NBR ,Z.REPORT_NUMBER ,%Bind(SEQNO) ,%Bind(PRINT_AREA_CODE) ,%Bind(SSR_ROWTYPE) ,A.AID_YEAR ,A.ITEM_TYPE ,A.ACAD_CAREER ,B.DESCR ,A.DISBURSED_AMOUNT ,A.ACCEPT_AMOUNT ,%Bind(TSCRPT_TYPE_AET.AWARD_AID_YEAR_PRT) ,%Bind(TSCRPT_TYPE_AET.AWARD_AMOUNT_PRT) FROM %Table(SSR_TSC_TMP) Z , PS_STDNT_AWARDS A , PS_ITEM_TYPE_FA B WHERE Z.PROCESS_INSTANCE = %ProcessInstance AND A.EMPLID = Z.EMPLID AND A.INSTITUTION = %Bind(INSTITUTION) AND A.ACAD_CAREER = Z.ACAD_CAREER AND A.ACCEPT_AMOUNT > 0 AND A.ITEM_TYPE = B.ITEM_TYPE AND A.SETID = B.SETID AND A.AID_YEAR = B.AID_YEAR AND B.INCLUDE_IN_TSCRPT = 'Y' AND A.AWARD_STATUS = 'A' AND B.EFF_STATUS = 'A' AND B.EFFDT = ( SELECT MAX(B1.EFFDT) FROM PS_ITEM_TYPE_FA B1 WHERE B.SETID = B1.SETID AND B.ITEM_TYPE = B1.ITEM_TYPE AND B.AID_YEAR = B1.AID_YEAR);
into something like this (%Table(SSR_TSC_TMP) changed to NY_SSR_TSC_TMP, %ProcessInstance changed to 0, some %Bind’s removed and the %Bind(INSTITUTION) in the WHERE clause changed to 'ZZZZZ'):
with NY_SSR_TSC_TMP AS(SELECT '0' PROCESS_INSTANCE,1 REPORT_REQUEST_NBR,1 REQUEST_SEQ_NBR,1 REPORT_NUMBER,'9999991' EMPLID,'PGT' ACAD_CAREERFROM dual )SELECT Z.REPORT_REQUEST_NBR ,Z.REQUEST_SEQ_NBR ,Z.REPORT_NUMBER ,A.AID_YEAR ,A.ITEM_TYPE ,A.ACAD_CAREER ,B.DESCR FROM NY_SSR_TSC_TMP Z , PS_STDNT_AWARDS A , PS_ITEM_TYPE_FA B WHERE Z.PROCESS_INSTANCE = 0 AND A.EMPLID = Z.EMPLID AND A.INSTITUTION = 'ZZZZZ'AND A.ACAD_CAREER = Z.ACAD_CAREER AND A.ACCEPT_AMOUNT > 0 AND A.ITEM_TYPE = B.ITEM_TYPE AND A.SETID = B.SETID AND A.AID_YEAR = B.AID_YEAR AND B.INCLUDE_IN_TSCRPT = 'Y' AND A.AWARD_STATUS = 'A' AND B.EFF_STATUS = 'A' AND B.EFFDT = ( SELECT MAX(B1.EFFDT) FROM PS_ITEM_TYPE_FA B1 WHERE B.SETID = B1.SETID AND B.ITEM_TYPE = B1.ITEM_TYPE AND B.AID_YEAR = B1.AID_YEAR);
The power of the WITH clause really proves itself out whenever the new dummy table is referenced more than once in your SQL statement.
- Using WITH Clause to mimic App Engine Temp Tables
- Mimic ‘onmouseout’ with CSS3 Transitions
- How to build a mobile app with an App Engine backend
- Freeform SQL (FFSQL) - Tip - How to create TEMP(Temporary) tables
- Tutorial on using downloaded WPA_PSK rainbow tables with airolib
- Installing and Running Google App Engine on a Linux System: Appendix D - Using Google App Engine
- Using linear assembly with XDC and codec engine
- Using CREATE TABLE AS SELECT (CTAS) to Reorganize Oracle Tables
- Using the AWR History Tables to compare performance
- Lesson10 Using DDL Statements to Create and Manage Tables
- 转 -- How To Repair Corrupted MySQL Tables Using myisamchk
- Oracle WITH clause
- The WITH Clause
- WITH Clause : Subquery Factoring
- File Upload on Google App Engine using struts2
- Using robots.txt To Control Search Engine Spiders
- Using Application Engine to Import Data from Files
- Using VBScript to Send Emails with Gmail
- String: 优化的那些事
- kkkkkkkkkk
- X64 调试 ERR(1275) This driver has been blocked from loading
- HTML DOM API
- 我们学习了UML,学习完了,怎么就忘了学习的目的。而是仅仅沉浸在内容上。
- Using WITH Clause to mimic App Engine Temp Tables
- MyEclipse 使用问题解决
- GTK+ Widget的内部结构与工作流程
- 学习Android 必备 实例大集合
- 如何在windows安装linux系统
- 为什么两个不确定值的浮点数无法直接比较是否相等
- 黑马程序员_Arraylist、HashSet存储自定义对象的方式
- 【num增加】 工具
- 控制项的资料系结