使用 SQLPlus 时如何设置 Oracle 绑定变量?
例子:
SELECT orders.order_no FROM orders WHERE orders.order_date BETWEEN :v1 AND :v2
Run Code Online (Sandbox Code Playgroud)
如何设置的日期:v1和:v2?
这是真的吗 ?
我希望在此表中插入列'valname'字符串,其随机顺序为(USD,EUR,RUB)10000次.
在第二列'ammount'中
插入100-2000的随机数.(10000次)
在3d列中,'should'表示乘法ammount的结果(如果是usd*69)(如果是EUR*72)(如果RUB*1.2)
例如
valname = USD, ammount = 100, converted_ammount = 6900;
valname = EUR, ammount = 100, converted_ammount = 7200;
valname = RUB, ammount = 100,converted_ammount = 120;
Run Code Online (Sandbox Code Playgroud)
按级别连接<= 10000;
CREATE table t_test01 ( valname varchar2(5),
ammount number null, converted_ammount number null --- by multiplication
* 69,72,1.2 )
Run Code Online (Sandbox Code Playgroud) 我有,我想圆特殊要求了以下方式号码-
1.14 to 1.5
1.6 to 2
0.8 to 1
7.5 to 7.5
Run Code Online (Sandbox Code Playgroud)
也就是说,最接近0.5的倍数.
有没有办法实现这个目标?
最好的祝福
我正在尝试消除NOT IN在查询中使用的需要:
select count(*)
FROM TABLE1 T1
LEFT OUTER JOIN TABLE2 T2
ON T1.DATAID = T2.EXISTING_DOCUMENT
AND T1.ownerid = -2000
AND T1.SUBTYPE = 144
AND T1.dataid NOT IN (SELECT T3.dataid
FROM TABLE3 T3
WHERE T3.ID = 123)
Run Code Online (Sandbox Code Playgroud)
原因:我读的NOT IN很慢(+ 500k行)并且不使用索引
我试过了:
select count(*)
FROM TABLE1 T1
LEFT OUTER JOIN TABLE2 T2
ON T1.DATAID = T2.EXISTING_DOCUMENT
AND T1.ownerid = -2000
AND T1.SUBTYPE = 144
left outer join TABLE3 T3
on T3.ancestorid = T1.dataid
where T3.ID = 123
Run Code Online (Sandbox Code Playgroud) 为什么oracle会回来..
ORA-06550:第9行,第3列:PLS-00306:调用'ADD_RULE_RANGE_ATTR'ORA-06550时参数的数量或类型错误:第9行,第3列:PL/SQL:语句被忽略
当我根据程序规范设置所有类型和参数时.
PROCEDURE add_rule_range_attr(
"p_name" IN VARCHAR2,
"p_entity" IN VARCHAR2,
"p_attribute" IN VARCHAR2,
"p_r_negate" IN NUMBER,
"p_ra_comparer1" IN VARCHAR2,
"p_ra_comparer2" IN VARCHAR2
);
Run Code Online (Sandbox Code Playgroud)
最初我的代码在Oracle APEX环境中运行,其中过程的参数由输入变量填充(例如:PX_INPUT_NAME),因此我必须确保我在参数中放入的所有变量都是正确的数据类型.但是,在调用过程时,我使用的变量具有与过程参数所请求的数据类型相对应的默认值.
brg_manager.add_rule_range_attr(
p_name => v_name,
p_entity => v_entity,
p_attribute => v_attribute,
p_r_negate => v_negate,
p_ra_comparer1 => v_comparer1,
p_ra_comparer2 => v_comparer2
);
Run Code Online (Sandbox Code Playgroud)
看看这个sqlfiddle的工作示例.
考虑以下
样本输入
SalesBoyName Product Amount
------------ ------- ------
Boy1 P1 100
Boy1 P1 40
Boy1 P2 100
Boy2 P1 100
Boy2 P3 12
Run Code Online (Sandbox Code Playgroud)
期望的输出
SalesBoyName P1 P2 P3
------------ ---- ---- ----
Boy1 140 100 null
Boy2 100 null 12
Run Code Online (Sandbox Code Playgroud)
下面的SQL SERVER 2005查询将完成这项工作
SELECT SalesBoyName, [P1] AS P1, [P2] AS P2,[P3] AS P3
FROM
(SELECT * FROM tblSales ) s
PIVOT
(
SUM (Amount)
FOR Product IN
( [P1], [P2], [P3])
) AS pvt
Run Code Online (Sandbox Code Playgroud)
我想在Oracle 10g中执行相同的操作.
这该怎么做?
这可能是微不足道的,但由于我对Oracle很新,所以我正在寻求帮助.
谢谢
我只需要选择只有偶数位数的ID(ID如下:p19,p20等).也就是说,p20是好的(2和0都是偶数); p18不是.
我想用substr从ID中获取每个数字,然后看看它是否均匀.
select from profs
where to_number(substr(id_prof,2,2))%2=0 and to_number(substr(id_prof,3,2))%2=0;
Run Code Online (Sandbox Code Playgroud) 我正在研究正则表达式,但无法弄清楚这个插入符号究竟做了什么。我认为这个插入符号的意思是“不等于”,但在下面的这个查询中,我很困惑:
SELECT REGEXP_REPLACE('San Antonio', '(^[[:alpha:]]+)', 'CITY') TEST
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
结果:
城市安东尼奥
'San' 应该符合 [:alpha:] 的要求,所以我不明白 caret 函数在这里做了什么。
我在 Oracle DB 上有表 T_LOCATION_DATA,如下所示:
Person_ID | Location | Role
----------------------------
101 Delhi Manager
102 Mumbai Employee
103 Noida Manager
104 Mumbai Employee
105 Noida Employee
106 Delhi Manager
107 Mumbai Manager
108 Delhi Employee
109 Mumbai Employee
Run Code Online (Sandbox Code Playgroud)
另一个表是 T_STATUS,其中包含以下数据:
Person_ID | Status
-------------------
101 Active
102 Active
103 Inactive
104 Active
105 Active
106 Inactive
107 Active
108 Active
109 Inactive
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取活跃的员工和经理的数量;在单个查询中按位置分组,结果如下:
Location | MANAGER COUNT | EMPLOYEE COUNT
Delhi 1 1
Mumbai 1 1
Noida 0 1
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下查询但没有结果: …