|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
即使对于MySQL的商业化的企业版来说,也没有高昂的许可证成本,当你将其与像甲骨文和微软之类的大型专有商业数据库比较的话。 输出orderby的sqeuence是,应当为“desc”大概“asc”
若输出两个orderby则,v_order_field="a[sequence],orderbyb"
CREATEORREPLACEPROCEDURETABLEPAGE_SELECT(v_page_size int,--thesizeofapageoflist
v_current_pageint,--thecurrentpageoflist
v_table_namevarchar2,--thetalbename
v_order_field varchar2,--theorderfield
v_order_sequencevarchar2,--theordersequenceshouldby"_desc"or"_asc",_isblank.
--v_sql_select varchar2,--theselectsqlforprocedure
--v_sql_count varchar2,--thecountsqlforprocedure
--v_out_recordcountOUTint,--thenumofreturnrows
p_cursorOUTrefcursor_pkg.return_cursor)as
v_sql varchar2(3000);--thesqlforselectallrowsoflist
v_sql_count varchar2(3000);--thecountsqlforprocedure
v_sql_order varchar2(2000);--theorderoflist
v_count int;--theamountrowsfooriginallist
v_endrownum int;--theendrownumofthecurrentpage
v_startrownumint;--thestartrownumofthecurrentpage
BEGIN
----settheorderoflist
if v_order_field!=NOthen
v_sql_order:=ORDERBY||v_order_field||||v_order_sequence;
else
v_sql_order:=;
endif;
----catchtheamountrowsoflist
v_sql_count:=SELECTCOUNT(ROWNUM)FROM||v_table_name;
executeimmediatev_sql_countintov_count;
--v_out_recordcount:=v_count;
----setthevalueofstartandendrow
ifv_order_sequence=descthen
v_endrownum:=v_count-(v_current_page-1)*v_page_size;
v_startrownum:=v_endrownum-v_page_size+1;
else
v_endrownum:=v_current_page*v_page_size;
v_startrownum:=v_endrownum-v_page_size+1;
endif;
----thesqlforpageslide
v_sql:=SELECT*FROM(SELECT||v_table_name||.*,rownumrnFROM||v_table_name||WHERErownum<=||
to_char(v_endrownum)||||v_sql_order||) WHERErn>=||
to_char(v_startrownum)||||v_sql_order;
openp_cursorforv_sql;
ENDTABLEPAGE_SELECT;一些典型的RDBMS功能并不总是在DBaaS系统中可用。例如MySQL学习教程,WindowsAzureSQLDatabase(以前的SQLAzure)是微软的DBaaS产品,提供了一个类似于SQLServer的数据库平台。 |
|