一、变量定义和使用
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;
报错:
问题:如何定义整个连接可以使用的变量??
努力不会背叛。
博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。