我在使用format_mask参数时发现了oracle TO_DATE函数的奇怪行为.
基本上,我看到的是,在一种情况下,它忽略给定的格式掩码,并使用自己的掩码解析输入,在其他情况下,它会抛出异常.
示例I预期行为 - 抛出错误:
SELECT TO_DATE('18-02-2016', 'DD/MON/YYYY') FROM dual
Run Code Online (Sandbox Code Playgroud)
ORA-01843:不是有效月份
示例II意外行为 - 解析日期:
SELECT TO_DATE('18-feb-2016', 'DD/MM/YYYY') FROM dual
Run Code Online (Sandbox Code Playgroud)
2016年2月18日00:00:00
我在文档中看不出任何这样的评论,所以我想知道这种不妥之处是设计还是错误或者我不理解正确的事情?
编辑: 看看答案我可以同意它很可能是设计的.但是在这里所做的事情对我来说是危险的"自动化".
如果格式将被错误地解释(由oracle猜测)怎么办?有没有关于这里究竟发生了什么的文件,所以我可以肯定它是安全的吗?
我的问题是 - 我可以把它关掉吗?我唯一的选择是自己验证格式吗?
我想在Kivy中创建GridLayout,其中包含许多矩形按钮和一些不同大小的自定义图像.为此,我想缩放图像(我想要这样做的方式如下所示),然后裁剪/隐藏溢出小部件边框的部分.调整大小很好,但我无法弄清楚如何隐藏/裁剪矩形之外的部分.例如:如果小部件的尺寸为10px x 10px,而我的图像为100px x 200px,我将其重新调整为10px x 20px并将其置于小部件中,但是下方的5px和abowe将是可见的.我不要那个.:)云有人帮我解决这个问题?
class PlaceIcon(Widget):
def __init__(self,image_path, **kwargs):
super(PlaceIcon, self).__init__(**kwargs)
self.bind(size=self.adjust_size)
self.image = Image(source=image_path)
self.image_path = image_path
def adjust_size(self,*args):
(a,b) = self.image.texture.size
(x,y) = self.size
(x1,y1) = self.pos
if x > y:
scale = x/a
else:
scale = y/b
x1 -= (scale*a-x)/2
y1 -= (scale*b-y)/2
with self.canvas:
self.canvas.clear()
self.background = Rectangle(texture=self.image.texture, pos=(x1,y1), size=(scale*a,scale*b))
Run Code Online (Sandbox Code Playgroud) 所以,我正在使用 node 创建一个 REST API,我必须创建一个路由。路由的目的:充当代理服务器并调用不同的外部网站并返回它对原始请求的响应。到目前为止,我有以下代码并且它有效:
app.post('/v1/something/:_id/proxy',
function(req, res, next) {
// Basically make a request call to some external website and return
// the response I get from that as my own response
var opts = {/*json containing proper uri, mehtod and json*/}
request(opts, function (error, responseNS, b) {
if(error) return callback(error)
if(!responseNS) return callback(new Error('!response'))
return res.json(responseNS.body)
})
}
)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何流式传输从外部网站获得的这个 http 响应。我的意思是,我想以流的形式获取响应,并在它以块的形式出现时立即返回它。这可能吗?
我注意到NO_DATA_FOUND从PLSQL中使用的函数抛出异常的奇怪行为.
长话短说 - 它在使用赋值时确实从函数传播,并且在使用时不会传播(或在两者之间的某处静默处理)SELECT INTO.
因此,给定函数test_me抛出NO_DATA_FOUND异常,当调用为:
v_x := test_me(p_pk);
Run Code Online (Sandbox Code Playgroud)
它会引发异常,而在调用时:
SELECT test_me(p_pk) INTO v_x FROM dual;
Run Code Online (Sandbox Code Playgroud)
它不会抛出异常.其他例外情况不会发生这种情况.下面您可以找到我的测试示例.
有人可以向我解释一下这种行为吗?
set serveroutput on;
CREATE OR REPLACE FUNCTION test_me(p_pk NUMBER) RETURN NVARCHAR2
IS
v_ret NVARCHAR2(50 CHAR);
BEGIN
BEGIN
SELECT 'PYK' INTO v_ret FROM dual WHERE 1 = 1/p_pk;
EXCEPTION WHEN NO_DATA_FOUND THEN
dbms_output.put_line(chr(9)||chr(9)||chr(9)||' (test_me NO_DATA_FOUND handled and rerised)');
RAISE;
END;
RETURN v_ret;
END;
/
DECLARE
v_x NVARCHAR2(500 CHAR);
v_pk NUMBER;
PROCEDURE test_example(p_pk NUMBER)
IS
BEGIN …Run Code Online (Sandbox Code Playgroud) 我想知道当我尝试将一天到第二个间隔与整数进行比较时,oracle 引擎盖下发生了什么。
下面举例。
SET SERVEROUTPUT ON;
DECLARE
v_date1 TIMESTAMP := current_timestamp ;
v_date2 TIMESTAMP := current_timestamp - 150;
BEGIN
-- Wrong way. But what is happening here?
IF v_date1 - v_date2 < 2 THEN
DBMS_OUTPUT.PUT_LINE('YES - why?');
ELSE
DBMS_OUTPUT.PUT_LINE('NO');
END IF;
-- Correct way
IF v_date1 < v_date2 + 2 THEN
DBMS_OUTPUT.PUT_LINE('YES');
ELSE
DBMS_OUTPUT.PUT_LINE('NO - works as expected');
END IF;
-- Another correct way
IF v_date1 - v_date2 < INTERVAL '2' DAY THEN
DBMS_OUTPUT.PUT_LINE('YES');
ELSE
DBMS_OUTPUT.PUT_LINE('NO - works as expected …Run Code Online (Sandbox Code Playgroud) 首先,我已经阅读了用于搜索的RESTful URL设计以及如何设计RESTful搜索/过滤?的问题.我正在尝试设计更高级的选项,以简单和RESTful方式进行搜索.这些问题的答案给了我一些见解和线索,告诉我如何为搜索/过滤功能设计我以前的应用程序网址模式.
首先,我使用模式为基本过滤选项提出了非常好的简单解决方案:
Equality search: key = val
IN search: key = val1 & key = val2
Run Code Online (Sandbox Code Playgroud)
但随着应用程序的增长,搜索要求也在增长.我最终得到了一些相当不愉快和复杂的网址模式,用于高级搜索选项,其中包括:
Negation search: key-N = val
Like search: key-L = val
OR search: key1-O = val1 & key2 = val2
Range search: key1-RS = val1 & key1-RE = val2
Run Code Online (Sandbox Code Playgroud)
更重要的是,除了过滤器,查询必须获取有关分页和顺序的信息,因此过滤器参数具有F-后缀,按字段排序具有O-后缀,并且分页具有P-后缀.
我希望在这一点上我不必补充说解析这样的请求是相当恶意的任务,如果密钥包含' - '则可能存在歧义.我创建了一些正则表达式来解析它,它现在运行得很好,但......
现在我开始编写一个新的Web应用程序,我有机会从头开始重新设计这个部分.
我想知道在包含所有信息的浏览器中以结构化和不言自明的方式创建对象,并将其作为JSON字符串发送到服务器,如:
filter = {{'type':'like','field':key,'value':val1,'operator':'and','negation':false},..}
Run Code Online (Sandbox Code Playgroud)
但我感到奇怪的是,这不是一个好主意 - 我真的不知道为什么.
所以,这将是我的上下文的定义.现在的问题是:
我正在寻找更简单,更安全的模式来实现高级搜索,包括我上面提到的RESTful GET参数选项 - 你能分享一些想法吗?或者也许是一些关于不以RESTful方式执行此操作的见解?此外,如果你看到JSON方式的一些陷阱,请分享它们.
编辑:
我知道是什么让json成为get参数,不是那么好主意.对它进行编码 - 它使它难看且难以阅读.
由thierry templier发出的链接提供的信息给了我一些思考的东西,我设法在GET参数中设计了更多的有条理和安全的过滤器处理.下面是语法的定义.
对于过滤器 - 多个F参数(每个搜索标准一个):
F = OPERATOR:NEGATION:TYPE:FIELD:VAL[:VAL1,:VAL2...]
Run Code Online (Sandbox Code Playgroud)
允许值: …