Oracle变量定义和使用(sqlplus和sql developer使用变量的区别)

一、变量定义和使用

sqlplus中可以这么用:
(注意这个变量只要在当前连接有效)

 

var myvar number;   --这种语法在developer上直接报错了。
exec :myvar:=100;
select * from employees where employee_id=:myvar


developer这么用:

 

set serveroutput on;   --确保可以打印输出
declare var2 number;
begin 
var2:=22;
dbms_output.put_line(var2);
end;

pl/sql developer

declare var_sql varchar2(200);
begin
var_sql:='good';
DBMS_OUTPUT.PUT_LINE(var_sql);
end;
--或者在定义的时候赋值
declare var_sql varchar2(200):='good';
begin
DBMS_OUTPUT.PUT_LINE(var_sql);
end;

2、通过select给变量赋值

select count(*) into a1 from employees

select into 支持同时给两个变量赋值

--两个参数同时复制
--创建测试表
declare
      num number;
begin
    select count(*) into num from DUAL  WHERE NOT EXISTS (SELECT 1 FROM TAB WHERE TNAME = 'TEST001');
    if num = 0 then
    execute immediate 'DROP TABLE TEST001' ;  
    end if;
END;    
CREATE TABLE TEST001(FID INT,FID2 INT);
--测试同时使用select 给两个变量赋值
DECLARE VAR_FID INT;
VAR_FID2 INT;
BEGIN
SELECT 100,200 INTO VAR_FID,VAR_FID2 FROM DUAL;
INSERT INTO TEST001(FID,FID2)
VALUES(VAR_FID,VAR_FID2);
END;
--测试结果查询,验证可以同时赋值
SELECT * FROM TEST001

--测试是否可以将多行数据插入某一个变量
DECLARE VAR_FID INT;
VAR_FID2 INT;
BEGIN
select fid01, fid02 INTO VAR_FID,VAR_FID2 
from 
(SELECT 100 fid01,200 fid02 FROM DUAL
union SELECT 200 fid01,300 fid02 FROM DUAL
) t ;
INSERT INTO TEST001(FID,FID2)
VALUES(VAR_FID,VAR_FID2);
END;

报错:

 

问题:如何定义整个连接可以使用的变量??

 

 

努力不会背叛。
博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值