1、创建测试表,
从2013年创立创新互联建站专注于”帮助中小企业+互联网”, 也是目前成都地区具有实力的互联网服务商。团队致力于为企业提供--站式网站建设、移动端应用( H5手机营销、app开发定制、微信开发)、软件开发、信息化解决方案等服务。
create table test_val(id varchar2(20),remark varchar2(20));
2、插入测试数据;
insert into test_val select level, 'lvl_'||level remark from dual connect by level=100;
commit;
3、编写语句,将表中的记录数赋值给变量;
declare
v_int number;
begin
execute immediate 'select count(*) from test_val' into v_int;
end;
4、将变量值打印,查看结果;
dbms_output.put_line(v_int);
在sqlplus和PL/SQL DEV中可以用或者定义变量,详细说明如下:
(1) :“变量名”eg:name;
生命周期:单次引用中,不需要声明,如果替换字符或日期类型,最好用单引号扩起
使用范围:where、order by、列表达式、表名、整个SELECT 语句中
(2) :“变量名”eg:name;
生命周期:整个会话(session连接),不需要声明
(3)define :“define 变量名=变量值”eg:DEFINE a = clark;
生命周期:整个会话,预先声明,使用时用引用声明的变量
define variable=用户创建的CHAR类型的值:define 变量名=值;
define column_name(变量名):查看变量命令。
undefine 变量名:清除变量
define:查看在当前会话中所有的替换变量和它们的值
用固定的语法结构写。
简单来说,就是你一个存储过程当中创建了一个表table_a,然后要用insert into将其他的数据插入到这个table_a当中,但是因为你在创建过程的时候 table_a还不存在,过程就会显示有编译错误。
因为table_a不存在必然导致过程无法执行,所以无法编译成功,而把insert into语句加如到execute immediate之后,则oracle不会再去理会这个对象是否存在,因此可以成功编译和执行。
没说清楚,你是在怎样的环境使用ORACLE,是SQL*Plus,还是在程序里,还是用SQL脚本,还是...
查看Oracle SQL绑定变量方法如下:
alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss';
set linesize 400
col sql_Id format a20
col name format a20
col datatype_string format a14
col value_string format a20
--这个sql从内存中读取绑定变量值信息,若是不在内存中,则使用下一个sql
select
sql_id,name, datatype_string, last_captured,value_string from
v$sql_bind_capture where sql_id='dxfcacn4t4ppw' order by
LAST_CAPTURED,POSITION;
--这个sql从awr中读取绑定变量值信息
select
instance_number, sql_id,name, datatype_string,
last_captured,value_string from dba_hist_sqlbind where
sql_id='fahv8x6ngrb50'order by LAST_CAPTURED,POSITION;