重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle里输出不是print,这个和其他有点不同
创新互联是一家集网站建设,怀远企业网站建设,怀远品牌网站建设,网站定制,怀远网站建设报价,网络营销,网络优化,怀远网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
给你一个,你直接运行就好
declare
i int;
j int;
begin
j:=10;
i:=1;
while ij
loop
dbms_output.put_line(rpad(chr(32),10-i,chr(32))||rpad('*',i*2-1,'*'));
i:=i+1;
end loop;
end;
oracle 里输出结果是用dbms_output.put_line这个方式,楼上说的是set serveroutput on是在命令行的操作下执行,用那个显示输出
输出结果集需要用到游标,到时候把游标里的内容也用dbms_output.put_line循环输出就好,如果是一个结果的话,就直接输出结果就OK
begin
core_acct_compare(参数1,参数2,参数3,参数4);
end;
begin ... end; 就是所谓的匿名块
第一步:在用户名和密码列分别输入要登录的数据库用户名和密码
第二步:在“数据库”中输入“ip:1521/oracle实例名”(如“192.168.0.143:1521/orcl”,本机填写“127.0.0.1”)
第三步:如果是普通用户连接类型为“Normal”,如果是超级管理员连接类型为“sysdba”,点击确定即可完成连接(connections)
这样写是有问题的,动态sql不支持create 。。。 select这种语法。。
DECLARE
sql_stmt VARCHAR2(200);
plsql_block VARCHAR2(500);
emp_id NUMBER(4) := 7566;
salary NUMBER(7,2);
dept_id NUMBER(2) := 50;
dept_name VARCHAR2(14) := 'PERSONNEL';
location VARCHAR2(13) := 'DALLAS';
emp_rec emp%ROWTYPE;
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE bonus (id NUMBER, amt NUMBER)';
sql_stmt := 'INSERT INTO dept VALUES (:1, :2, :3)';
EXECUTE IMMEDIATE sql_stmt USING dept_id, dept_name, location;
sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
plsql_block := 'BEGIN emp_pkg.raise_salary(:id, :amt); END;';
EXECUTE IMMEDIATE plsql_block USING 7788, 500;
sql_stmt := 'UPDATE emp SET sal = 2000 WHERE empno = :1
RETURNING sal INTO :2';
EXECUTE IMMEDIATE sql_stmt USING emp_id RETURNING INTO salary;
EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
USING dept_id;
EXECUTE IMMEDIATE 'ALTER SESSION SET SQL_TRACE TRUE';
END;
匿名块是实现一种功能的语句块存储过程也一样,只不过存储过程可以重复使用,不需要每次都复制黏贴实现该功能的匿名块