PL/SQL(Procedural Language/SQL)是oracle中引入的一种过程化编程语言

PLS-00103:出现符号"declare"在需要下列之一时

符号"begin"被替换为"declare"后继续

存储过程里不需要用declare关键字

PLS-00103:出现符号"end-of-file"在需要下列之一时:

end要和if以及begin匹配,完了之后要用/来表示完了

create or replace procedure addStu is
v_NewMajor varchar2(10):='Chemistry';
v_FirstName varchar2(10):='Scott';
v_LastName varchar2(10):='Tiger';
begin
update students
set major=v_NewMajor
where first_name=v_FirstName
and last_name = v_LastName; if sql%notfound then
insert into students (first_name, last_name, major)
values (v_FirstName, v_LastName, v_NewMajor);
end if;
end;
/

select text from user_source where name = upper('addStu') and type = 'PROCEDURE';

这里好像一定要用upper('addStu')不然就会出现为选行。

执行过程的时候

exec 过程名

call 过程或函数

首先创建一个临时表

create table temp_table (

my_com varchar2(35),

vcomment varchar2(35));

spool命令可以指定路径和文件名,需要有写权

create or replace procedure edtmp is
/* 存储过程编程示例 */
v_Number number(5) :=115;
v_Comment varchar2(35);
begin
if v_Number < 500 then v_Comment := 'Too small';
insert into temp_table (my_com, vcomment)
values ('This is too cazy', v_Comment); elsif v_Number < 1000 then v_Comment := 'A little bigger';
insert into temp_table (my_com, vcomment)
values ('This is only luck', v_Comment); else v_Comment := 'That enough';
insert into temp_table (my_com, vcomment)
values ('Maybe good',v_Comment); end if;
end;
/

PL/SQL构建于SQL之上,可以用来编写包含SQL语句的程序。

(那么这个和其他编程语言通过驱动连接到数据库对数据进行操作的不同之出在于?)

PL/SQL中可以包括:

块结构

变量和类型

条件逻辑

循环

游标,保存查询返回的结果

过程

函数

包,可以把过程和函数组合到一个单元中。

数据抽象

create type可以用来定义对象类型

在过程中执行另一个过程时直接写过程名就行了

PLS-00428:在此select语句中缺少INTO子句

答:在PL/SQL程序中不允许出现不带into子句的select语句,查询出来的数据必须得找个容器来装。

有这样一段过程

create or replace procedure instu is
rem 使用单行注释
v_major varchar2(10):='Germany'; -- 定义专业
v_first_name varchar2(10):='Fisher'; -- 定义姓氏
v_last_name varchar2(10):='Mark'; -- 定义名字
begin
        -- 将这三个作为一条信息插入到表中
        insert into students (major, first_name, last_name) values
(v_major, v_first_name, v_last_name);
end;
/

然后就报错了

PLS-00103:出现符号在需要下列之一时

:= . ( @ %

; not null range default character

我还以为中文字符打进去了,原来全是第二句报的错。

http://www.linuxidc.com/Linux/2012-07/65272.htm

这里给了我答案,原来rem是remark的缩写,只能用在sql plus 的单行命令中,

而不能用在PL/SQL中,在PL/SQL中只能使用--或者/*  */进行注释,这个问题纠结了半天,就是没想到是该死的rem,

真真是叫哔了狗。

在oracle中重新编译存储过程的方法:

http://blog.itpub.net/26686207/viewspace-1144800/

第一种:如果使用PL/SQL Developer工具

左侧工具栏中选中“存储过程”-》选择已经失效的procedure-》右键-》选择重新编译即可

第二种:命令行版

1、查找无效对象

select 'Alter '|| object_type ||'  '||object_name||'  compile;'  from user_objects where status = 'INVALID';

2、重新编译存储过程procedure_name,执行下面的脚本即可

alter procedure procedure_name compile;

my_title books.title%TYPE;

这里的意思是my_title这个变量的类型和表books中字段title的类型是一样的

oracle设置显示的行数和列数

show pagesize;

set pagesize 100;

shole linesize;

set linesize 100;

DBMS_OUTPUT是用来输出信息的,这是一个PL/SQL的系统包,但是有个前提是要设置一下:

set serveroutput on

为何感觉我总是很逗比

create or replace procedure usecur as

-- 声明这两个变量
v_first_name varchar2(20);
v_last_name varchar2(20); -- 声明游标
cursor c_Students is
select first_name, last_name
from students; begin
-- 启动游标进程
open c_Students;
loop
fetch c_Students into v_first_name, v_last_name;
exit when c_Students%NOTFOUND;
--如果找到Scott就退出
while v_first_name = 'Scott' loop
exit;
end loop;
end loop;
-- 过程结束
-- 不用的话就及时关闭游标进程
close c_Students;
if v_first_name = 'Scott' then
DBMS_OUTPUT.PUT_LINE('找到这个傻叉了');
else
DBMS_OUTPUT.PUT_LINE('找不到这个傻叉');
end if;
end;
/

oracle PL/SQL基础编程的更多相关文章

  1. Oracle数据库—— PL/SQL基础编程

    一.涉及内容 1. 掌握PL/SQL程序块的结构,理解并熟悉各种变量的应用. 二.具体操作 (一)使用system用户登录SQL*PLUS,使用SQL语句创建用户:u_你的姓名首字母(例如:u_zs) ...

  2. 二十、oracle pl/sql基础

    一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍 ...

  3. oracle pl/sql 基础

    一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍 ...

  4. PL/SQL 基础编程

    PL/Sql 编程 PL/Sql结构 [declare] --声明变量 begin --执行部分 [exception] ---异常处理部分 end PL/Sql  基本数据类型 数值类型 1. nu ...

  5. Oracle pl/sql 基础入门语法

    PL/SQL是一种块结构的语言,这意味着PL/SQL程序被划分和编写代码的逻辑块.每块由三个子部分组成:1     声明 此部分开头使用关键字DECLARE.它是一个可选的部分,并限定在该程序中使用的 ...

  6. Oracle PL/SQL 高级编程

    1. 复合数据类型--记录类型 Ø        语法格式 type  类型名 is   record ( 字段1  字段1类型 [not null]:=表达式1; 字段2  字段2类型 [not n ...

  7. Oracle PL/SQL DBA 编程实践基础

    [附:一文一图]

  8. Oracle PL/SQL基础

    1.下载sql developer数据库连接可视化工具 连接地址:点我下载 下载完成,安装有Java环境,解压即可运行,也可以在linux系统中运行.

  9. 浅析Oracle PL/SQL 学习--未完待续

    这是一篇关于Oracle Pl/SQL数据库编程的课程学习分享... 首先说明几点: 学习这门课程之前,已经学过并且掌握一些基础的SQL语句.数据库结构分析.ER图设计等知识: 这里也只是较为大概地将 ...

随机推荐

  1. Oracle体系结构总览(整理)

    先让我们来看一张图  这张就是Oracle 9i的架构全图.看上去,很繁杂.是的,是这样的.现在让我们来梳理一下:一.数据库.表空间.数据文件1.数据库数据库是数据集合.Oracle是一种数据库管理系 ...

  2. java总结第四次//常用类

    六.常用类 主要内容:Object类.String类.Date类.封装类 (一)Object类 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则 ...

  3. 【Pro ASP.NET MVC 3 Framework】.学习笔记.6.SportsStore:导航

    在之前的章节,偶们设置了核心的基础设施,现在我们将使用基础设计添加关键特性,你将会看到投资是如何回报的.我们能够很简单很容易地添加重要的面向客户的特性.沿途,你也会看到一些MVC框架提供的附加的特性. ...

  4. Zero_qiqi DIV模式的省市区三级联动

    1].[代码] [HTML]代码 跳至 [1] [2] [3] [4] [5] [6] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

  5. 使用butterknife zelezny插件时必须保证已导入butterKnife的库工程。

    使用butterknife zelezny插件时必须保证已导入butterKnife的库工程. 另外需要把光标定位到setContentView(R.layout.activity_main);中的a ...

  6. java.lang.IllegalThreadStateException

    java.lang.IllegalThreadStateException 今天遇到了这个问题.当时的情景是想要循环实现了runable的类和继承Thread类的两个线程.可是没有注意到,继承自Thr ...

  7. PostgreSql安装

    官网:http://www.postgresql.org/download/linux/redhat/ 一.安装 由于我的机子是centos6.2,所以选择RedHat的. 按照官网所说的进行安装: ...

  8. install ios开发环境

    环境搭建参照下边这个网址: http://itbbs.pconline.com.cn/soft/50602805.html

  9. 成为Java顶尖高手要看的11本书

    成为Java顶尖高手要看的11本书 学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考.雕琢和审核的 ...

  10. VC++实现在系统托盘来新消息闪烁,鼠标悬停显示窗口

    转载:http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c8115/How-to-Implement-a-Mouse ...