我以前问过这个问题,但我没有得到任何帮助.我想在给定属性的情况下获取两个不同表中的行数.这是我的代码.我没有获取条件所在的总计数,而是得到了表的整数
create or replace PROCEDURE p1( suburb IN varchar2 )
as
person_count NUMBER;
property_count NUMBER;
BEGIN
SELECT count(*) INTO person_count
FROM person p WHERE p.suburb = suburb ;
SELECT count(*) INTO property_count
FROM property pp WHERE pp.suburb = suburb ;
dbms_output.put_line('Number of People :'|| person_count);
dbms_output.put_line('Number of property :'|| property_count);
END;
/
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以做到这一点,以便我可以检索该SUBURB中的真实人数
来自PERSON TABLE的一些数据
PEID FIRSTNAME LASTNAME
---------- -------------------- --------------------
STREET SUBURB POST TELEPHONE
---------------------------------------- -------------------- ---- ------------
30 Robert Williams
1/326 Coogee Bay Rd. Coogee 2034 9665-0211
32 …Run Code Online (Sandbox Code Playgroud) 如何编写一个PL/SQL程序:
ts填充了当前时间戳/日期时间的新列简单的任务
variable dept_id NUMBER
DECLARE
max_deptno NUMBER;
dept_name departments.department_name%TYPE := 'Education';
BEGIN
select max(department_id)
into max_deptno
from departments;
:dept_id := max_deptno + 10;
insert into departments (department_id, department_name, location_id)
values (:dept_id, dept_name, null);
DBMS_OUTPUT.PUT_LINE('The maximum department id is ' || max_deptno);
DBMS_OUTPUT.PUT_LINE('Rows made by insert: ' || SQL%ROWCOUNT);
END;
Run Code Online (Sandbox Code Playgroud)
max_deptno不是NULL.为什么dept_id在赋值后为NULL?我究竟做错了什么?
脚本输出:
MAX(DEPARTMENT_ID)
------------------
520
Error starting at line 10 in command:
DECLARE
max_deptno NUMBER;
dept_name departments.department_name%TYPE := 'Education1';
BEGIN
select max(department_id)
into max_deptno
from departments;
:dept_id := max_deptno + 10; …Run Code Online (Sandbox Code Playgroud) 在SQL Server中,我可以使用select语句打印出某些内容的值.
SELECT 'xyz'
SELECT GetDate()
Run Code Online (Sandbox Code Playgroud)
我可以在Oracle中做类似的事情而不添加FROM <tablename>吗?
我是PL/SQL的新手(不是我的意思是一个真正的菜鸟,就像今天开始学习它一样)并且一直在尝试使用TOAD IDE的一些简单的脚本但是已经变得有点困在这个.我只是尝试使用游标循环一系列记录并显示每个记录,但不断收到以下错误:
ORA-06550: line 13, column 3:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
; <an identifier> <a double-quoted delimited-identifier>
The symbol ";" was substituted for "end-of-file" to continue.
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
SET SERVEROUTPUT ON
DECLARE
CURSOR cursor1 IS
SELECT TWOR_WORKS_ID
FROM TMA_WORKS
WHERE TWOR_ORG_REF = 9999;
BEGIN
FOR records IN cursor1
LOOP
dbms_output.put_line (records.TWOR_WORKS_ID);
END LOOP;
END
Run Code Online (Sandbox Code Playgroud)
有人可以指出我出错的地方,因为我看到了一些例子,代码看起来和我正在尝试的相同.我猜这是一个失踪; 关闭错误消息但在哪里?
只是想知道我将如何更改以下SQL,以便插入只发生在唯一的link_row实例上.因此,如果在seletc中拉回完全相同的值,我只想进行循环并第一次插入.
BEGIN
FOR LINK_ROW IN ( SELECT LINKTEXT, LINKURL, CORPID FROM LINKS )
LOOP
//Do insert here
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,我在主键违规时会出现错误,因为同一项在循环内插入两次.
提前致谢
有一个数据库表;
> == id || customer_number || account_type || balance
> == 1 - 123456 - 1 - 100
> == 2 - 123457 - 1 - 200
> == 3 - 123456 - 3 - 200
> == 4 - 123456 - 4 - 220
> == 5 - 123456 - 5 - 250
> == 6 - 123457 - 2 - 200
Run Code Online (Sandbox Code Playgroud)
如何选择至少具有{1和5}类型之一的客户?
我有一个查询这样的表的游标
CURSOR Cur IS
SELECT Emp_No,status
from Employee
FOR UPDATE OF status;
Run Code Online (Sandbox Code Playgroud)
现在我想使用Emp_no从另一个表更新Employee表中的状态.完成此操作后,我需要使用此状态来调用自定义业务逻辑,而不是光标检索的原始状态.解决这个问题的最佳方式是什么?这是我写的.顺便说一句,我声明了一个名为v_status的变量
FOR Rec IN Cur LOOP
BEGIN
UPDATE Employee
SET status = (select a.status from Employee_Status where a.Emp_No = rec.Emp_No)
WHERE CURRENT OF Cur ;
COMMIT;
END;
SELECT status INTO v_status
FROM Employee
where Emp_No = rec.Emp_No;
IF(v_status = 'Active') THEN
-- Custom Business Logic
ELSE
-- Business logic
END IF;
END LOOP;
Run Code Online (Sandbox Code Playgroud)
什么是更好的方法来实现这一目标?
为什么这会给我错误?
CREATE OR REPLACE trigger customerLineCount
BEFORE insert on cust_line
for each row
when(new.cust_id > 0)
DECLARE
lineCount number;
BEGIN
select count (*) into lineCount
from (cust_line inner join customer
on cust_line.cust_id = customer.cust_id)
where (customer.cust_id = :new.cust_id)
if :new.gender = "m" and lineCount = 3 THEN
dbms_output.put_line ('Error! User already has 3 lines');
elseif :new.gender = "f" and lineCount = 1 THEN
dbms_output.put_line ('Error! User already has 1 line');
end if;
END customerLineCount;
/
Run Code Online (Sandbox Code Playgroud) 我的命令有问题dbms_output.put_line().
我有一个变量pres_name,我想在屏幕上打印该值.因此我使用,dbms_output.put_line()但命令不接受这种类型的变量,但我发现他们使用它的所有网站dbms_output.put_line(varchar variable).但我得到这个警告:
Fehler(15,5):请-00306:Falsche Anzahl oder Typen von Argumenten in Aufruf von'PUT'
用英语讲:
调用put时参数的数量或类型错误
我使用的是Oracle sql developer.
代码:
create or replace
procedure ex10_1
(
pr_name varchar
)
as
cursor pres is select vice_pres_name from admin_pr_vp;
begin
open pres;
for pr_name in pres loop
dbms_output.put_line(pr_name);
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
ps:代码还不完美.