|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于insert和delete,event中包含了插入/删除的记录的所有字段的值(太爽了。。)数据|前提怎样有前提的分步删除数据表中的纪录作者:eygle出处:http://blog.eygle.com日期:February22,2005
«本人下手,人给家足|Blog首页
偶然候我们必要分派删除数据表的一些纪录,分批提交以削减关于Undo的利用,本文供应一个复杂的存储历程用于完成该逻辑。
你能够依据你的必要举行得当调剂,本例仅供参考:
SQL>createtabletestasselect*fromdba_objects;Tablecreated.SQL>createorreplaceproceduredeleteTab2/**3**Usage:runthescripttocreatetheprocdeleteTab4**inSQL*PLUS,type"execdeleteTab(Foo,ID>=1000000,3000);"5**todeletetherecordsinthetable"Foo",commitper3000records.6**7**/8(9p_TableNameinvarchar2,--TheTableNamewhichyouwanttodeletefrom10p_Conditioninvarchar2,--Deletecondition,suchas"id>=100000"11p_Countinvarchar2--CommitafterdeleteHowmanyrecords12)13as14pragmaautonomous_transaction;15n_deletenumber:=0;16begin17while1=1loop18EXECUTEIMMEDIATE19deletefrom||p_TableName||where||p_Condition||andrownum<=:rn20USINGp_Count;21ifSQL%NOTFOUNDthen22exit;23else24n_delete:=n_delete+SQL%ROWCOUNT;25endif;26commit;27endloop;28commit;29DBMS_OUTPUT.PUT_LINE(Finished!);30DBMS_OUTPUT.PUT_LINE(Totally||to_char(n_delete)||recordsdeleted!);31end;32/Procedurecreated.SQL>insertintotestselect*fromdba_objects;6374rowscreated.SQL>/6374rowscreated.SQL>/6374rowscreated.SQL>commit;Commitcomplete.SQL>execdeleteTab(TEST,object_id>0,3000)Finished!Totally19107recordsdeleted!PL/SQLproceduresuccessfullycompleted.
很复杂,可是想来也有人能够用到。
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功 |
|