我有一个程序定义为:
CREATE OR REPLACE PROCEDURE foo (
AS_OF_DATE_IN IN DATE DEFAULT TRUNC(sysdate)-1
) AS ...
Run Code Online (Sandbox Code Playgroud)
哪些可以用这些方式执行:
-- passes '11-NOV-2011'
exec foo('11-NOV-2011');
--set DEFAULT value (yesterday's date)
exec foo();
--makes things more difficult, as default value isn't set
exec foo(NULL);
Run Code Online (Sandbox Code Playgroud)
我想做的是:
AS_OF_DATE_IN:=NVL(AS_OF_DATE_IN, TRUNC(sysdate)-1);
Run Code Online (Sandbox Code Playgroud)
但它会产生重新分配错误.
除了使用NVL()包装AS_OF_DATE_IN的所有用法之外,是否有更有效的方法来处理这种情况?
**编辑**我犯了一个相当愚蠢的错误 - 我正在写一个程序,而不是一个函数.该过程不返回值.
我有一个array的hash值:
> taxes = [{:name=>"foo", :rate=>0.5}, {:name=>"bar", :rate=>2.5}]
=> [{:name=>"foo", :rate=>0.5}, {:name=>"bar", :rate=>2.5}]
Run Code Online (Sandbox Code Playgroud)
这可以总结一下费率:
> taxes.reduce(0) {|sum,element|sum + element[:rate]}
=> 3.0
Run Code Online (Sandbox Code Playgroud)
还有另一种方法可以做到这一点,可能更容易理解和简洁吗?
**编辑**
为了比较(是的,我意识到这只是一个数组):
>> [1,2,3].reduce(:+)
=> 6
Run Code Online (Sandbox Code Playgroud) 此服务方法将返回IQueryable<Vehicle>:
public IQueryable<Vehicle> GetVehicles()
{
return
from v in _context.Vehicles
where
v.Schedule == true
&& v.Suspend == false
select v;
}
Run Code Online (Sandbox Code Playgroud)
如果我想在查询中包含另一个表:
public IQueryable<Vehicle> GetVehicles()
{
return
from v in _context.Vehicles
join si in _context.ServiceIntervals on v.Id equals si.VehicleId into loj
from rs in loj.DefaultIfEmpty()
where
v.Schedule == true
&& v.Suspend == false
select new { vehicle = v, repair = rs };
}
Run Code Online (Sandbox Code Playgroud)
正确的返回类型是什么IQueryable<T>? IQueryable<{vehicle,repair}>不正确。
有没有更好的方法来撰写select声明?
** 编辑 **
我希望保持简单,但我认为澄清是有用的。
ServiceIntervals实际上是 …
给定这个 JSON 哈希:
{
"id": 55555,
"name": "111111",
"custom_data_field": [
{
"id": 1,
"label": "Vehicle Type",
"value": "Coach"
},
{
"id": 2,
"label": "Vendor",
"value": 1
}
]
}
Run Code Online (Sandbox Code Playgroud)
我需要value与每个相关联label。
我可以value使用数组的索引来获取:
@item()?['custom_data_field'][0]['value'] # Coach
@item()?['custom_data_field'][1]['value'] # 1
Run Code Online (Sandbox Code Playgroud)
但这有点脆弱。
此语法不起作用:
@item()?['custom_data_field'][@label=='Vehicle Type']['value'] # Coach
@item()?['custom_data_field'][@label=='Vendor']['value'] # 1
Run Code Online (Sandbox Code Playgroud)
有没有办法可靠地做到这一点?