CREATE TABLE student1(ID INT); INSERT INTO student1 VALUES(1); INSERT INTO student1 VALUES(2);CREATE OR REPLACE PROCEDURE p_student1 AS V_TOTAL NUMBER(10); BEGIN SELECT COUNT(*) INTO V_TOTAL FROM student1; DBMS_OUTPUT.PUT_LINE('总数为:'||V_TOTAL); END; Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 Connected as *******************
SET SERVEROUTPUT ON BEGIN P_STUDENT1; END;或者 SET SERVEROUTPUT ON EXEC P_STUDENT1;
如果在sql*plus set serveroutput on ;
用job定时跑也可以,其他的见楼上
查询的时候一般用function,因为function本身就能返回一个值
查询的时候一般用function,因为function本身就能返回一个值比如我有一张表A,里面有字段id varchar2,num varchar2,name vachar2 ,因为这张表里面的数据是死的,所以我想要写一个存储过程。当有select * from A where id = ?;返回符合id条件的所有数据。请问这个时候我该怎么写存储过程?求完整的语句。
查询的时候一般用function,因为function本身就能返回一个值比如我有一张表A,里面有字段id varchar2,num varchar2,name vachar2 ,因为这张表里面的数据是死的,所以我想要写一个存储过程。当有select * from A where id = ?;返回符合id条件的所有数据。请问这个时候我该怎么写存储过程?求完整的语句。 将TGP_FUNDS换成你自己的表CREATE OR REPLACE PROCEDURE TEST(PI_FND_ID VARCHAR2, PO_CUR OUT SYS_REFCURSOR) IS BEGIN OPEN PO_CUR FOR SELECT * FROM TGP_FUNDS T WHERE T.FND_ID = PI_FND_ID; END TEST;使用存储过程:declare R1 TGP_FUNDS%ROWTYPE; rc sys_refcursor; begin test('MPGF',rc); fetch rc into R1; while rc%found loop dbms_output.put_line(R1.FND_ID); fetch rc into R1; end loop; end;
以上是函数的调用方式。 用如下方式调用调用存储过程: BEGIN P_STUDENT1; END;
plsql中。命令窗口执行exec p_student1
以上是函数的调用方式。 用如下方式调用调用存储过程: BEGIN P_STUDENT1; END; 可以用call P_STUDENT1();的方式调用,注意,如果不带出参和入参,后面的那个()也不能省。 查询的时候一般用function,因为function本身就能返回一个值比如我有一张表A,里面有字段id varchar2,num varchar2,name vachar2 ,因为这张表里面的数据是死的,所以我想要写一个存储过程。当有select * from A where id = ?;返回符合id条件的所有数据。请问这个时候我该怎么写存储过程?求完整的语句。 将TGP_FUNDS换成你自己的表CREATE OR REPLACE PROCEDURE TEST(PI_FND_ID VARCHAR2, PO_CUR OUT SYS_REFCURSOR) IS BEGIN OPEN PO_CUR FOR SELECT * FROM TGP_FUNDS T WHERE T.FND_ID = PI_FND_ID; END TEST;使用存储过程:declare R1 TGP_FUNDS%ROWTYPE; rc sys_refcursor; begin test('MPGF',rc); fetch rc into R1; while rc%found loop dbms_output.put_line(R1.FND_ID); fetch rc into R1; end loop; end; 如果查找的数据有多条的话,使用游标比较方便。
INSERT INTO student1 VALUES(1);
INSERT INTO student1 VALUES(2);CREATE OR REPLACE PROCEDURE p_student1
AS
V_TOTAL NUMBER(10);
BEGIN
SELECT COUNT(*) INTO V_TOTAL FROM student1;
DBMS_OUTPUT.PUT_LINE('总数为:'||V_TOTAL);
END; Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.2.0
Connected as *******************
SQL> SET serveroutput ON;
SQL> EXEC p_student1;
总数为:2
PL/SQL procedure successfully completed
SQL>
plsql 你可以右键测试,或者新建命令窗口(而不是sql窗口)输上面的sql
查询或者程序段中,直接使用即可。。
BEGIN
P_STUDENT1;
END;或者
SET SERVEROUTPUT ON
EXEC P_STUDENT1;
set serveroutput on ;
将TGP_FUNDS换成你自己的表CREATE OR REPLACE PROCEDURE TEST(PI_FND_ID VARCHAR2,
PO_CUR OUT SYS_REFCURSOR) IS
BEGIN
OPEN PO_CUR FOR
SELECT * FROM TGP_FUNDS T WHERE T.FND_ID = PI_FND_ID;
END TEST;使用存储过程:declare
R1 TGP_FUNDS%ROWTYPE;
rc sys_refcursor;
begin
test('MPGF',rc);
fetch rc into R1;
while rc%found loop
dbms_output.put_line(R1.FND_ID);
fetch rc into R1;
end loop;
end;
用如下方式调用调用存储过程:
BEGIN
P_STUDENT1;
END;
用如下方式调用调用存储过程:
BEGIN
P_STUDENT1;
END;
可以用call P_STUDENT1();的方式调用,注意,如果不带出参和入参,后面的那个()也不能省。
查询的时候一般用function,因为function本身就能返回一个值比如我有一张表A,里面有字段id varchar2,num varchar2,name vachar2 ,因为这张表里面的数据是死的,所以我想要写一个存储过程。当有select * from A where id = ?;返回符合id条件的所有数据。请问这个时候我该怎么写存储过程?求完整的语句。
将TGP_FUNDS换成你自己的表CREATE OR REPLACE PROCEDURE TEST(PI_FND_ID VARCHAR2,
PO_CUR OUT SYS_REFCURSOR) IS
BEGIN
OPEN PO_CUR FOR
SELECT * FROM TGP_FUNDS T WHERE T.FND_ID = PI_FND_ID;
END TEST;使用存储过程:declare
R1 TGP_FUNDS%ROWTYPE;
rc sys_refcursor;
begin
test('MPGF',rc);
fetch rc into R1;
while rc%found loop
dbms_output.put_line(R1.FND_ID);
fetch rc into R1;
end loop;
end;
如果查找的数据有多条的话,使用游标比较方便。