小编gfr*_*ius的帖子

Oracle:PL/SQL 中查看值是否存在的最快方法:列表、VARRAY 或临时表

更新如果您想查看很长的原始问题,请查看编辑。这是问题的更清晰的简短版本......

我需要查看GroupA(并非总是如此GroupA,这会改变每次循环迭代)是否存在于 200 个左右的组的 [list,varray,temp table,whatever] 中。我如何存储这 200 个组完全由我控制。但是我想将它们存储在一个结构中,该结构适合于进行最快的“存在”检查,因为我将不得不在循环中针对不同的值(并非总是GroupA)多次检查此列表。那么什么是 PL/SQL 中最快的,检查一个列表......

IF 'GroupA' IN ('GroupA','GroupB') THEN...

或使用 MEMBER OF ... 检查 VARRAY

IF 'GroupA' MEMBER OF myGroups THEN
Run Code Online (Sandbox Code Playgroud)

或以这种方式检查 VARRAY...

FOR i IN myGroups.FIRST .. myGroups.LAST
LOOP
    IF myGroups(i) = 'GroupA' THEN
        v_found := TRUE;
        EXIT;
    END IF;
END LOOP;
Run Code Online (Sandbox Code Playgroud)

或检查关联数组... will test this tomorrow

更新:来自每个人的建议的最终测试结果 谢谢大家。我运行了这些测试,循环了 1000 万次,使用 a 的逗号分隔字符串LIKE似乎是最快的,所以我想这些点必须归于@Brian McGinity(时间在下面的评论中)。但由于时间都如此接近,所以我采用哪种方法可能并不重要。我想我会使用该VARRAY MEMBER OF方法,因为我可以用一行代码(批量收集)加载数组,而不必循环游标来构建字符串(感谢 @Wernfried 引起MEMBER OF我的注意)... …

oracle plsql

4
推荐指数
1
解决办法
2万
查看次数

具有增量的小时的正则表达式(RegEx)

我只需要接受符合这些规则的输入......

  1. 0.25-24
  2. .25(.00,.25,.50,.75)的增量
  3. 不需要第一个数字.
  4. 希望尾随零是可选的.

一些有效条目的示例:

  1. 0.25
  2. 0.50
  3. 0.5
  4. 1
  5. 1.0
  6. 5.50
  7. 23.75
  8. 24(允许的最大值)
  9. 更新:什么都没有,null/blank,也应该被接受为有效

一些无效条目的示例:

  1. 0
  2. 0.0
  3. .00
  4. 0.0
  5. 0.00
  6. 24.25
  7. -1

我知道RegEx是一种模式匹配语言,因此它对于范围,小于和大于检查并不是很好.所以要检查它是否小于或等于24意味着我必须找到一个模式,对吧?所以有24种可能的模式可以使这个很长的RegEx,我能正确理解吗?我可以使用ColdFusion进行检查以确保它在0-24范围内.如果我在这部分使用ColdFusion,那么这不是世界末日,但如果它不会导致它过长,那么将它全部放入RegEx会很好.这是我到目前为止:

^\d{0,2}((\.(0|00|25|5|50|75))?)$

http://regex101.com/r/iS7zM3

除了0-24范围检查或仅检查零之外,它几乎可以处理所有这些操作.我会继续关注它,但任何帮助将不胜感激.谢谢!

regex coldfusion

3
推荐指数
1
解决办法
453
查看次数

IIS 403禁止在URL中使用%2F

我有IIS(Microsoft-IIS/7.5)返回403禁止,我无法弄清楚为什么.我把它缩小到了,%2F但只有当它前面有一个字母时.知道是什么原因引起的吗?

这些工作......

但是如果你把任何一个字母放在%2F它前面那就失败了403.

这些失败......

谢谢!

更新:我排除了ColdFusion,因为这给出了相同的403:http://example.com/mySite123/indexdotcfm? x = a%2F

更新:

Top Level IIs:
Checked:  
  Allow unlisted file name extensions
  Allow unlisted verbs
  Allow high-bit characters
Unchecked:
  Allow double escaping

Request Limits:
Maximum allowed content length (Bytes):  30000000 Maximum URL length (Bytes):
4096 Maximum query string (Bytes):  2048

Sites
mySite123:
  Checked:  
    Allow unlisted verbs
    Allow high-bit characters
  Unchecked:
    Allow unlisted file name …
Run Code Online (Sandbox Code Playgroud)

java iis coldfusion url-rewriting http-status-code-403

3
推荐指数
1
解决办法
3190
查看次数

Oracle 正则表达式 (REGEXP_LIKE) 太长错误 - ORA-12733

我必须在 PL/SQL 中验证 IPv6 地址。我从这里想出了正则表达式:Regular Expression (RegEx) for IPv6 Different from IPv4

我收到ORA-12733: regular expression too long错误。有没有办法解决?

if ( REGEXP_LIKE(v,'^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]1{0,1}[0-9]){0,1}[0-9]))$') ) then
    self.success := 1;
    self.message := null;
    return;
else
    self.success := 0;
    self.message := 'Invalid IPv6 address. Example of a valid format: 2001:0db8:0000:0000:0000:ff00:0042:8329';
    return;
end if;
Run Code Online (Sandbox Code Playgroud)

限制是512/sf/answers/188588361/),我在657。我想不出有什么办法可以把它分开。

将 java 类导入 Oracle 是唯一的方法吗?https://community.oracle.com/thread/1149462?start=0&tstart=0

更新:我正在尝试这个,但是当我运行来select测试它时,它会抛出ORA-29531: no method isProperIPv6Address in class ipv6. 我以前没有在 Oracle 中搞过 java,所以我不确定我是否已经接近或者这是否是一个坏主意。(摘自https://community.oracle.com/message/8648095 …

regex sql oracle plsql

2
推荐指数
1
解决办法
1万
查看次数

IPv6正则表达式(RegEx)在PL/SQL中不起作用

我似乎无法找出为什么这个正则表达式不起作用PL/SQL.

if ( REGEXP_LIKE(v,'/^(?>(?>([a-f0-9]{1,4})(?>:(?1)){7}|(?!(?:.*[a-f0-9](?>:|$)){8,})((?1)(?>:(?1)){0,6})?::(?2)?)|(?>(?>(?1)(?>:(?1)){5}:|(?!(?:.*[a-f0-9]:){6,})(?3)?::(?>((?1)(?>:(?1)){0,4}):)?)?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?4)){3}))$/iD') ) then
Run Code Online (Sandbox Code Playgroud)

这是用于验证IPv4和IPv6,它来自这里:https://stackoverflow.com/a/1934546/3112803

不确定这是否与它有关但我也问过这个问题关于最后的D标志:这个正则表达式(RegEx)标志意味着什么/ iD

出于某种原因,这个正则表达式适用于我在本网站上的大部分测试:http://regex101.com/但在PL/SQL一切都无效.

我的意思的是,有一些情况下,我觉得很失败,但我一直在寻找了几天,这是最好的一个我能找到的是在512个字符(512是限制使用时REGEXP_LIKEPL/SQL)

我很感激任何帮助.谢谢!

这些是我正在使用的测试用例......

{1: Initial address, regex should say valid/match}
select isValid('2001:0db8:0000:0000:0000:ff00:0042:8329','ipv6') from dual;

{2: After removing all leading zeroes, regex should say valid/match}
select isValid('2001:db8:0:0:0:ff00:42:8329','ipv6') from dual;

{3: After omitting consecutive sections of zeroes, regex should say valid/match}
select isValid('2001:db8::ff00:42:8329','ipv6') from dual;

{4: The loopback address, regex …
Run Code Online (Sandbox Code Playgroud)

regex oracle plsql ipv6

2
推荐指数
1
解决办法
1147
查看次数

MySql事件调度程序调用PHP脚本

我第一次玩MySql Events.这是活动......

DELIMITER $$
CREATE EVENT testEvent
ON SCHEDULE EVERY 1 minute STARTS '2014-01-01 03:00:00' 
DO BEGIN
  /*
  INSERT INTO test(text) VALUES ('text');* <- THIS WORKS JUST FINE
  */
  SET @exec_var = sys_exec('c:\wamp\bin\php\php5.4.12\php c:\mySite\testit.php');
END $$
DELIMITER;
Run Code Online (Sandbox Code Playgroud)

sys_exec()对php 的调用似乎不起作用,我无法弄清楚为什么.互联网上没有太多关于此的内容.我知道php脚本有效,因为当我c:\wamp\bin\php\php5.4.12\php c:\mySite\testit.php在命令行运行时,我得到了结果.testit.php只是执行与事件中注释掉的完全相同的插入.任何想法为什么sys_exec()不运行我的脚本?或者,如果有错误,我将如何记录或查看它们?

(我知道可能存在安全问题以及我还没有想到的其他事情.这只是概念内容的初步证明.但如果你看到任何理由我不应该沿着这条路走下去并使用PHP守护进程代替我我会对原因感兴趣.这种方式似乎比起学习/设置PHP守护进程要简单得多.

谢谢!

这就是testit.php脚本中的所有内容......

try
{
    $dbh = new PDO("mysql:host=********;dbname=********", ********, ********);
    $dbh->setAttribute( PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true );
    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
}
catch(PDOException $e) { echo $e->getMessage(); }

$q1 = $dbh->prepare("INSERT INTO test(text) VALUES ('text')");
$q1->execute();
Run Code Online (Sandbox Code Playgroud)

php mysql daemon

1
推荐指数
1
解决办法
7212
查看次数

coldfusion性能比较:自定义标签与功能

在我的测试盒上,我有ColdFusion 10并且只分配了1gig:"最大JVM堆大小(以MB为单位)= 1024".

我有一个循环大约1000次的过程.每次循环迭代都会调用自定义标记〜200次.所以大约有200,000个电话.这个过程永远不会结束,我最终耗尽了记忆.我确定这是我在标签里面做的问题,而不是标签本身.但我想证明这一点.我跑这个测试,似乎ColdFusion的功能要快得多2.7secs,而不是14.6secs.测试只增加一个数字.

我的问题是:这似乎是一个有效的测试吗? 如果功能如此之快,那么尽可能使用它们而不是自定义标签是经验法则吗?

检测结果:

x = 0
Running good customtag 1000000 times...
x = 1000000
Time to complete: 14627

x = 0
Running good function 1000000 times...
x = 1000001
Time to complete: 2793
Run Code Online (Sandbox Code Playgroud)

good.cfm自定义标签:

<cfparam name="ATTRIBUTES.x" type="numeric" default="0">

<cfif thisTag.ExecutionMode eq "end">
    <cfset request.x = ATTRIBUTES.x+1>
    <cfset thistag.generatedcontent = "">
</cfif>
Run Code Online (Sandbox Code Playgroud)

测试代码:

<cffunction name="good" output="false" returntype="Numeric" access="private">
    <cfargument name="numIn" type="numeric" required="true">
    <cfset var x = 0>
    <cfset x = arguments.numIn + …
Run Code Online (Sandbox Code Playgroud)

memory coldfusion performance function custom-tag

0
推荐指数
1
解决办法
346
查看次数

ColdFusion和Oracle SQL注入示例

假设ColdFusion 10,0,13,287689和Oracle Database 11g企业版11.2.0.2.0 - 64位生产.

有了这个例子......

<cfquery name="q" datasource="ds">
    update someTable set
    #form.col#label = <cfqueryparam cfsqltype="cf_sql_varchar" value="#x#">
    where id = <cfqueryparam cfsqltype="cf_sql_decimal" value="#id#">
</cfquery>
Run Code Online (Sandbox Code Playgroud)

还假设没有数据验证检查#form.col#,如何利用它?显然,它们可能会导致查询失败并显示无效列,但由于多个语句无法在单个语句中运行,因此我没有看到任何更恶意的行为<cfquery>.所以像这样的东西不起作用......

#form.col#:

id = 1; delete from users; --comment everything else out...
Run Code Online (Sandbox Code Playgroud)

我知道使用SELECT会更容易利用联合来获取您无权查看的数据,但我对这个特定的更新语句很好奇.

sql oracle coldfusion sql-injection

0
推荐指数
1
解决办法
360
查看次数