这是我在这里发表的第一篇文章,我想就一个理论上简单的查询寻求帮助。
我创建的当前查询是尝试生成一个随机数,该数字将被识别为偶数或奇数。根据该值,它应该打印" M"甚至,或者" W"奇怪的。虽然当我尝试在选择内部使用案例时,我得到了"缺少关键字"错误。这是我的以下代码:
<pre>
.htaccess
#Checking if module is avalaible
<IfModule mod_rewrite.c>
#Using the rewrite engine
RewriteEngine On
RewriteBase /folder/ /*location address if localhost localhost/project */
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#Rewrite rule to redirect the request
RewriteRule ^(.*)$ web/$1 [QSA,L]
<IfModule>
</pre>
我已尝试检查网站是否存在类似问题,虽然我发现了类似的问题并且人们正确地获得了解决方案,但我并不完全清楚我在这里失踪了什么。当我单独运行选择时,我得到了我想要的偶数或奇数,但是当我尝试打印结果时却没有。
答案 0 :(得分:1)
为什么要尝试在查询中嵌入dbms_output?只需写下:
select
case
when mod(round(dbms_random.value(1,100)),2) = 0 then 'M'
when mod(round(dbms_random.value(1,100)),2) = 1 then 'W'
end
from dual
另外,您知道,因为您在两次不同的时间调用dbms_random,所以在同一查询中会得到两个不同的值。如果要比较一个值,则使用WITH子句
with rand_value as
( select round(dbms_random.value(1,100)) val from dual
)
select
case
when mod(val,2) = 0 then 'M'
when mod(val,2) = 1 then 'W'
end
from rand_value
答案 1 :(得分:1)
SELECT语句不能PRINT,它只能RETURN一些东西。
您可以使用
之类的查询select
v,
case when mod(v, 2) = 0 then 'M' else 'W' end l
from
(select round(dbms_random.value(1, 100)) v from dual)
并按照您的意愿处理结果(例如打印)。
答案 2 :(得分:0)
由于分号,您收到错误。
此外,您正在调用随机函数两次,从而获得两个不同的随机值。我会使用IF-THEN-ELSE而不是SELECT语句,因为后者无法打印。
IF mod(round(dbms_random.value(1,100)),2) = 0 THEN
dbms_output.put_line('M');
ELSE
dbms_output.put_line('W');
END IF;