Oracle SQL中的字符串连接运算符是什么?
我应该注意哪些"有趣"功能?
(这似乎很明显,但我找不到先前提出的问题).
ROWNUM和之间有什么区别ROW_NUMBER ?
unix的新手,学习谈话和走路吧.我正在.ksh中编写一个脚本,并要求发送带有消息的邮件.目前在我的脚本中使用此命令:
mailx -s"File not found" abc@def.com
Run Code Online (Sandbox Code Playgroud)
此命令可帮助我拥有主题和收件人姓名.我的问题是如何与它一起写一条消息.因为每次我运行脚本它暂停并要求我输入消息然后执行,我想预先包含消息,以便脚本不会暂停.
所以我知道我可以使用以下任一方法在PL/SQL中初始化变量:
DEFAULT关键字:=赋值运算符例如:
counter binary_integer DEFAULT 15;counter binary_integer := 15;这两种方法是否完全等同于PL/SQL引擎,还是有任何细微的差别?
我在包中有2个程序.我正在调用一个过程来获取逗号分隔的用户ID列表.
我将结果存储在VARCHAR变量中.现在当我使用这个以逗号分隔的列表放入其中的一个IN子句时抛出" ORA-01722:INVALID NUMBER"异常.
这就是我的变量的样子
l_userIds VARCHAR2(4000) := null;
Run Code Online (Sandbox Code Playgroud)
这是我分配值的地方
l_userIds := getUserIds(deptId); -- this returns a comma separated list
Run Code Online (Sandbox Code Playgroud)
我的第二个问题是 -
select * from users_Table where user_id in (l_userIds);
Run Code Online (Sandbox Code Playgroud)
如果我运行此查询,我会收到INVALID NUMBER错误.
有人可以在这帮忙.
我编写了一个 PL/SQL 程序来更新 Employee 表的工资
create table Employee
(ID VARCHAR2(4 BYTE) NOT NULL,
First_Name VARCHAR2(10 BYTE),
Last_Name VARCHAR2(10 BYTE),
Start_Date DATE,
End_Date DATE,
Salary Number(8,2),
City VARCHAR2(10 BYTE),
Description VARCHAR2(15 BYTE)
)
/
Run Code Online (Sandbox Code Playgroud)
这就是程序
CREATE OR REPLACE PROCEDURE update_employee_salary(
p_factor IN NUMBER
) AS
v_employee_count INTEGER;
BEGIN
UPDATE employee
SET salary = salary * p_factor;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END update_employee_salary;
/
Run Code Online (Sandbox Code Playgroud)
当我尝试调用该过程时
CALL update_employee_salary (1.5)
Run Code Online (Sandbox Code Playgroud)
甲骨文显示ORA-00900: invalid SQL statement
从字符串中提取单词的最佳方法是什么?我已经做了一些事情,因为我找到了许多方法,但没有一个看起来"简单".
我们假设有一个名为'change_opening_hours'的程序.此过程具有名为"v_perioden"的时间范围字符串输入.
这个字符串看起来像:
'10:00-12:00' 或
'10:00-12:00 14:00-16:00' 或
'10:00-12:00 14:00-16:00 18:00-22:00' 等
现在我已经自己做了一些事情来从这个输入中抽出每一段时间.
v_perioden VARCHAR2(50) := '10:00-12:00 14:00-18:00 22:00-24:00';
...
-- loop though time-periode depeningd
-- on amount of spaces
FOR i IN 0..REGEXP_COUNT(v_perioden, ' ') LOOP
-- first period
IF i = 0 THEN DBMS_OUTPUT.PUT_LINE(SUBSTR(v_perioden, 0, 11));
-- second period
ELSIF i = 1 THEN DBMS_OUTPUT.PUT_LINE(SUBSTR(v_perioden, 13, 11));
--thirt period
ELSIF i = 2 THEN DBMS_OUTPUT.PUT_LINE(SUBSTR(v_perioden, 25, 11));
END IF;
END LOOP;
Run Code Online (Sandbox Code Playgroud)
输出:
10:00-12:00
14:00-18:00
22:00-24:00
Run Code Online (Sandbox Code Playgroud)
现在这种方式工作正常,但它不是那么有能力.我试图找出如何从空间中的字符串中提取单词,但这并没有成功.