oracle资料库函式库
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-25
Also, for a qualified replacement you need to parse the ## selection, cause this will fail: "SELECT id, from FROM ..."). ## "from" is - as far as I know a keyword in Oracle, so it can ## only be used in this way. But you have been warned. function num_rows() { $curs=ora_open($this->Link_ID); ## this is the important part and it is also the HACK! if (eregi("^[[:space:]]*SELECT[[:space:]]",$this->lastQuery) ) { # This works for all?? cases, including SELECT DISTINCT case. # We just make select count(*) from original sql expression # and remove ORDER BY (if any) for speed # I like regular expressions too ;-))) $q = sprintf("SELECT COUNT(*) FROM (%s)", @eregi_Replace("ORDER[[:space:]]+BY[^)]*()*)", "\1", $this->lastQuery) ); # works also for subselects: # if (eregi("[[:space:]]+FROM([[:space:]]+.*[[:space:]]+FROM)",$this->lastQuery,$r)) # $areplace=$r[1]; # $q=eregi_Replace("^[[:space:]]*SELECT[[:space:]]+". # ".*[[:space:]]+FROM", # "SELECT COUNT(*) FROM$areplace", # $this->lastQuery); if ($this->Debug) echo "<BR>Debug: num_rows: $q<BR>"; ORA_parse($curs,$q); ORA_exec($curs); ORA_fetch($curs); $result = ORA_getcolumn($curs,0); ORA_close($curs); if ($this->Debug) { echo "<BR>Debug: ID ".$this->QueryID. " num_rows=". $result ."<BR>"; } return $result; } else { $this->halt("Last Query was not a SELECT: $this->lastQuery"); } } function num_fields() { if ($this->Debug) echo "<BR>Debug: num_fields=". ora_numcols($this->Query_ID) . "<BR>"; return ora_numcols($this->Query_ID); } function nf() { return $this->num_rows(); } function np() { print $this->num_rows(); } function f($Name) { return $this->Record[$Name]; } function p($Name) { print $this->Record[$Name]; } /* public: sequence number */ function nextid($seq_name) { $this->connect(); /* Independent Query_ID */ $Query_ID = ora_open($this->Link_ID); if(!@ora_parse($Query_ID,"SELECT $seq_name.NEXTVAL FROM DUAL")) { // There is no such sequence yet, then create it if(!@ora_parse($Query_ID,"CREATE SEQUENCE $seq_name") || !@ora_exec($Query_ID) ) { $this->halt("<BR> nextid() function - unable to create sequence"); return 0; } @ora_parse($Query_ID,"SELECT $seq_name.NEXTVAL FROM DUAL"); } if (!@ora_exec($Query_ID)) { $this->halt("<BR>ora_exec() failed:<BR>nextID function"); } if (@ora_fetch($Query_ID) ) { $next_id = ora_getcolumn($Query_ID, 0); } else { $next_id = 0; } if ( $Query_ID > 0 ) { ora_close($Query_ID); } return $next_id; } function disconnect() { if($thi |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于oracle资料库函式库的所有评论