Oracle 过程中变量赋值

?





1

2

3

4

5

6

7

8

9

10

create or replace
function get_sal1(id employees.employee_id%type)

  return
number is

  sal employees.salary%type;

begin

  sal := 0;

  select
salary into
sal from employees where
employee_id = id;

  return
sal;

end;

 

?





1

2

3

4

5

6

7

8

9

10

create or replace
function get_sal1(id employees.employee_id%type)

  return
number is

  sal employees.salary%type:= 0;

  --sal := 0;

begin

  select
salary into
sal from employees where
employee_id = id;

  return
sal;

end;

  

 下面会报错:

Compilation errors for FUNCTION HR.GET_SAL1

Error: PLS-00103: 出现符号 "SELECT"在需要下列之一时:
        * & = - + ; < / > at in
          is mod remainder not rem
<an exponent (**)> <> or != or ~= >=
          <= <> and or
like like2 like4 likec between || multiset
          member submultiset
       符号 ";" 被替换为 "SELECT" 后继续。 Line: 8 Text:
select salary into sal from employees where employee_id = id;

?





1

2

3

4

5

6

7

8

9

10

11

create or replace
function get_sal1(id employees.employee_id%type)

  return
number is

  sal employees.salary%type;

begin

  sal := 0

  select
salary into
sal from employees where
employee_id = id;

  return
sal;

end;

  这个也会报错:

Compilation errors for FUNCTION HR.GET_SAL1

Error: PLS-00103: 出现符号 "="在需要下列之一时:
        constant exception
          <an identifier>
<a double-quoted delimited-identifier> table
          long double ref char time
timestamp interval date binary
          national character nchar
       符号 "<an identifier>" 被替换为 "=" 后继续。
Line: 5 Text: sal := 0;

?





1

2

3

4

5

6

7

8

9

10

11

create or replace
function get_sal1(id employees.employee_id%type)

  return
number is

  sal employees.salary%type;

  sal := 0;

begin

  select
salary into
sal from employees where
employee_id = id;

  return
sal;

end;

  

转:

PL/SQL支持SQL中的数据类型,PL/SQL中正常支持NUMBER,VARCHAR2,DATE等Oracle
SQL数据类型。声明变量必须指明变量的数据类型,也可以声明变量时对变量初始化,变量声明必须在声明部分。声明变量的语法是:




变量名 数据类型[
:=初始值]

语法解析:

数据类型如果需要长度,可以用括号指明长度,比如:varchar2(20)。

声明变量




SQL>
DECLARE

2       sname VARCHAR2(20)
:=‘jerry‘;  ①

3  BEGIN

4       sname:=sname||‘ and tom‘;  ②

5       dbms_output.put_line(sname);  ③

6  END;

7  /jerry

PL/SQL
procedure successfully completed

代码解析:

①     声明一个变量sname,初始化值是“jerry”。字符串用单引号,如果字符串中出现单引号可以使用两个单引号(’’)来表示,即单引号同时也具有转义的作用。②     对变量sname重新赋值,赋值运算符是“:=”。

③     dbms_output.put_line是输出语句,可以把一个变量的值输出,在SQL*Plus中输出数据时,可能没有结果显示,可以使用命令:set
serveroutput on设置输出到SQL*Plus控制台上。

对变量赋值还可以使用SELECT…INTO 语句从数据库中查询数据对变量进行赋值。但是查询的结果只能是一行记录,不能是零行或者多行记录

数据库赋值
  数据库赋值是通过
SELECT 语句来完成的,每次执行 SELECT
语句就赋值一次,一般要求被赋值的变量与SELECT中的列名要一一对应。如:
例:
DECLARE
emp_id   
emp.empno%TYPE :=7788;
emp_name 
emp.ename%TYPE;
wages    
emp.sal%TYPE;
BEGIN
SELECT ename, NVL(sal,0) + NVL(comm,0) INTO emp_name,
wages
FROM emp WHERE empno =
emp_id;
Dbms_output.put_line(emp_name||‘----‘||to_char(wages));
END;
 
提示:不能将SELECT语句中的列赋值给布尔变量。

字符及数字运算特点

空值加数字仍是空值:NULL + < 数字> = NULL
空值加(连接)字符,结果为字符:NULL || <字符串> =
< 字符串>

Oracle 过程中变量赋值

时间: 2024-11-05 11:25:59

Oracle 过程中变量赋值的相关文章

Python中变量赋值的8种形式、需要注意哪些细节?

本文解释python中变量赋值的形式,并解释一些细节. python中变量赋值的几种形式 1 x = "long" # (1).基本形式 2 x, y = "long", "shuai" # (2).元组对应赋值 3 [x, y] = ["long", "shuai"] # (3).列表对应赋值 4 a, b, c, d = "long" # (4).序列赋值 5 a, *b = 'lo

Makefile中变量赋值的方式

Makefile中的"="":="."?="和"+="区别是:"="是直接给变量赋值.":="是将":="右边中包含的变量直接展开给左边的变量赋值."?="是在该变量没有被赋值 的情况下为其赋值."+="是给该变量追加值.例:a = 1b = 2c := $(a) 3d = 4d ?= 5b += 6结果:a=1c=1 3d=4

mysql中变量赋值

http://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html sql server中变量要先申明后赋值: 局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的): 申明局部变量语法:declare @变量名 数据类型:例如:declare @num int: 赋值:有两种方法式(@num为变量名,value为值) set @num=value;   或   select @num=value; 如果想获取查询

程序在运行过程中变量的保存位置与生命周期

本例说明了一个程序在运行的时候,各种变量所保存的位置.因为位置不同,自然,变量的生命周期也各不相同. 代码示例: #include <iostream> using namespace std; int nGNum1; void showStackAddress(){    cout<<"address of showStackAddress() is:\t["<<(void*)&showStackAddress<<"]

Elisp 中变量赋值函数 set 与 setq 辨析

在 Elisp 中,为变量赋值的函数有 set 与 setq,但是,两者存在很大的差异. 使用 set 赋值: 如果我们想为变量 flowers 赋值为一个 列表 '(rose violet daisy buttercup) ,我们需要如下语句: (set 'flowers '(rose violet daisy buttercup)) 需要注意的是,当你使用 set 函数为变量赋值时,你需要在 set 函数的两个参数(即变量与值)前添加单引号.因为如果我们不添加单引号,这两个参数就会被当成表达

Oracle 过程中检查数据表存在与否

在过程中,尤其是每天执行的任务,通常要检查查询的数据表存在不存在,如果不存在则等待一段时间在进行执行,以下代码实现了这个功能,如果表不存在,抛出异常,交给异常处理代码,确保数据完整性 使用方法:p_CheckTable('UserName.TableName')用户名不存在,则在所有表中查找 create or replace procedure p_CheckTable(p_TableName in varchar2)  asv_count number;v_TableName varchar

java中变量赋值的理解

1.当赋值的值超出声明变量的范围时候,会报错! byte a =200 //会报错,因超出范围. byte a =(byte)200;//进行一个强制转换,就不会报错,不过会超出范围,超出部分会从头开始加, 由于byte的范围为-128~127,所以是-128+73为所得结果.2.声明一个整数类型时候,默认都是int类型(4个8位):如果具体的数值比声明变量的取值范围小,则不报错. 例:short a =222;3.long l = 88888888888l 很明显,这一长串数字是好超过int的

django连接Oracle过程中出现的问题

开始时版本信息: python 3.6   +   ce_oracle 6 最终版本信息: python 3.5   + ce_oracle 5.2 ce_oracle版本问题 cx_Oracle-5.2.1-12c.win-amd64-py3.5     5.2.1是指cx_oracle的版本,12c是指Oracle的版本,py3.5是指python的版本 1.开始安装的是cx_oracle 6,但是在django下运行时候,报错 django.db.utils.DatabaseError:

Oracle -&gt;&gt; 变量赋值 Demo

刚学Oracle,学习学习别人的代码.这段代码时从下面的博文中摘取的:http://www.cnblogs.com/mq0036/p/4155774.html declare l_dept integer := 20; currtime date := sysdate; l_nam varchar2(20) := to_char(add_months(trunc(sysdate),-12),'yyyymmdd'); -- to_char(sysdate,'MM')-13; type num_li