PLSQL在from后面使用变量,以及输入'&字符'的方法
PLSQL设置

PL/SQL设置用分号隔开不同的SQL语句在同一窗口输入,可以在一次执行,PL/SQL将自动新建SQL窗口,分别执行不同的SQL语句(PL/SQL7.1版本有次功能,低版本的可能会提示出错)用&符号引入变量如select*from emp where ename='&ename'执行时,PL/SQL就会弹出窗口,要你输入ename的值Ctrl+E查看历史记录可以调出Recall Statement重新调用语句,调出历史上成功执行过的Sql语句执行单条SQL语句在使用PL/SQL Developer的SQL Window时,按F8键,PL/SQL Developer 默认是执行该窗口的所有SQL语句,需要设置为光标所在的那条SQL语句,即执行当前SQL语句;设置方法:PL/SQL Developer7.1.2 -->tools->Preferences-->Window types,勾上“AutoExecute queries”和“AutoSelect Statement”即可。
设置编辑器、表格字体等可以在Tools->Preferences->fonts中设置。
格式化SQL语句在使用PL/SQL Developer的SQL Window时,有时候输入的SQL语句太长或太乱,希望能用比较通用的写法格式话一下,这样看起来会好看些,也好分析;使用方法:选中需要格式化的SQL语句,然后点击工具栏的PL/SQL beautifier按钮即可。
查看执行计划在使用PL/SQL Developer的SQL Window时,有时候输入的SQL语句执行的效率,分析下表结构,如何可以提高查询的效率,可以通过查看Oracle提供的执行计划;使用方法:选中需要分析的SQL语句,然后点击工具栏的Explain plan按钮(即执行计划),或者直接按F5即可。
调试存储过程在使用PL/SQL Developer操作Oracle时,有时候调用某些存储过程,或者调试存储过程;调用存储过程的方法:首先,在PL/SQL Developer左边的Browser中选择Procedures,查找需要调用的存储过程;然后,选中调试的存储过程,点击右键,选择Test,在弹出来的Test scrīpt窗口中,对于定义为in 类型的参数,需要给该参数的Value输入值;最后点击上面的条数按钮:Start debugger或者按F9;最后点击:RUN或者Ctrl+R。
plsql + 的用法

plsql + 的用法==========PlSql,全称为PL/SQL,是Oracle数据库中一种常用的编程语言。
本篇文章将详细介绍PlSql的用法,包括其基本语法、开发环境设置、常用函数和语句等。
一、基本语法-----PlSql的基本语法包括声明、赋值和执行语句。
以下是一个简单的PlSql程序示例:```sqlDECLAREv_name VARCHAR2(50);v_age NUMBER;BEGINv_name := '张三';v_age := 25;DBMS_OUTPUT.PUT_LINE('姓名: ' || v_name || ', 年龄: ' || v_age);END;```上述代码中,我们声明了两个变量v_name和v_age,并分别赋值为字符串和数字类型。
然后使用DBMS_OUTPUT.PUT_LINE语句输出结果。
在PlSql中,可以使用Oracle提供的输出函数来输出变量的值。
二、开发环境设置要编写和运行PlSql程序,需要安装Oracle数据库客户端,并配置开发环境。
具体步骤如下:1. 安装Oracle数据库客户端,并确保数据库服务已启动。
2. 打开Oracle SQL Developer或其他Oracle数据库管理工具。
3. 创建一个数据库连接,并选择要使用的数据库。
4. 在工具中打开一个新的PlSql编辑器窗口或创建一个新的PlSql文件。
三、常用函数和语句---------PlSql提供了许多内置函数和语句,用于处理数据、执行操作和生成结果。
以下是一些常用的函数和语句:* 数据类型转换函数:TO_CHAR、TO_NUMBER等。
* 字符串操作函数:SUBSTR、LENGTH、REPLACE等。
* 日期操作函数:YEAR、MONTH、DAY等。
* 控制语句:BEGIN...END、LOOP、WHILE、CASE等。
* 异常处理语句:EXCEPTION、RAISE等。
plsql使用技巧详解

plsql使用技巧详解1.记住登陆密码?为了工作方便希望PL/SQL?Developer记住登录Oracle的用户名和密码;设置方法:PL/SQL?Developer?7.1.2?->tools->Preferences->Oracle->Logon?History?,?“Store?history”是默认勾选的,勾上“Store?with?password”?即可,重新登录在输入一次密码则记住了;?2.登录后默认自动选中My?Objects?默认情况下,PLSQL?Developer登录后,Brower里会选择All?objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My?Objects后响应速率则是以毫秒计算的。
?设置方法:?Tools菜单?-->?Brower?Filters,会打开Brower?Folders的定单窗口,把“My?Objects”设为默认即可。
?Tools菜单--Brower?Folders,中把你经常点的几个目录(比如:Tables?Views?Seq?Functions?Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短。
?3.类SQL?PLUS窗口?File->New?->Command?Window?这个类似于oracle的客户端工具sql?plus,但用比它好用多了;?4.关键字自动大写?Tools->Preferences->Editor,将Keyword?case选择Uppercase。
这样在窗口中输入sql语句时,关键字会自动大写,而其它都是小写。
这样阅读代码比较容易,且保持良好得编码风格,同理,在Tools->Preferences->Code?Assistant里可以设置数据库对象的大写、小写,首字母大写等。
PLSQL命令行command模式常见错误

PLSQL命令⾏command模式常见错误⽇常运维过程中,经常使⽤PLSQL的command模式运⾏SQL脚本,对于⼀些常见的错误,你知道原因在哪⾥吗?1.SQL脚本执⾏后弹出输⼊框原因:SQL*PLUS默认环境⾥会把'&字符'当成变量来处理.解决⽅案:⽅案⼀:有些时候我们也需要在SQL>的符号下输⼊'&字符', 只需要改变SQL*PLUS下⼀个环境变量define即可.在脚本最前⾯添加关闭绑定变量功能,在脚本最后重新打开绑定变量功能。
set define off; #是把默认的&绑定变量的功能取消, 可以把'&字符'当成普通字符处理set define on;#打开&绑定变量的功能,⽅案⼆:在编辑器中将 & 批量更换成 '||'&'||' 然后执⾏即可。
2.SQL脚本执⾏后未正常结束,返回数字原因:SQL脚本未正常结束解决⽅案:在对应的脚本未正常结束SQL⾏后添加/或者;3.SQL脚本执⾏后⼀直显⽰excuting执⾏中,⽆法结束原因:SQL脚本中引⽤的表被锁定,相关事务锁未释放解决⽅案:1:查V$DB_OBJECT_CACHESELECT * FROM V$DB_OBJECT_CACHE WHERE name='CUX_OE_ORDER_RPT_PKG' AND LOCKS!='0';注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称。
发现 locks=22:按对象查出sid,serial#SELECT A.OBJECT_NAME,B.SESSION_ID,C.SERIAL#,C.PROGRAM,ERNAME,MAND,C.MACHINE,C.LOCKWAITFROM ALL_OBJECTS A, v$locked_object B, v$session CWHERE A.OBJECT_ID = B.OBJECT_IDAND C.SID = B.SESSION_ID3:alter system kill session 'sid值,serial#值' immediate;。
plsql用法,操作介绍

plsql用法,操作介绍PL/SQL是Oracle数据库中一种重要的编程语言,它提供了强大的数据处理和数据库操作能力。
本文将向大家介绍PL/SQL的用法和操作。
一、PL/SQL基础PL/SQL是一种过程化的编程语言,它可以在Oracle数据库中执行存储过程、函数、触发器和包等对象。
这些对象可以由用户自定义,并在数据库中存储,以供其他用户调用。
PL/SQL提供了丰富的数据类型、控制结构、函数和过程,使得开发者可以方便地编写复杂的数据库操作程序。
二、PL/SQL语法1. 声明语句:在PL/SQL中,需要先声明变量和常量,常见的声明语句有:变量声明(如:变量类型数据类型;),常量声明(如:CONST 常量名数据类型 = 值)。
2. 条件语句:PL/SQL支持多种条件语句,如IF-THEN-ELSE,CASE表达式等。
3. 循环语句:PL/SQL支持FOR循环、WHILE循环和LOOP循环等。
4. 异常处理:PL/SQL提供了异常处理机制,可以捕获和处理运行时出现的错误。
5. 函数和过程:PL/SQL支持定义函数和过程,可以对数据进行操作并返回结果。
三、PL/SQL操作1. 创建存储过程:可以使用CREATE PROCEDURE语句创建存储过程,指定过程的名称、参数和执行逻辑。
2. 调用存储过程:可以使用CALL语句调用存储过程,并传递参数。
3. 创建函数:可以使用CREATE FUNCTION语句创建函数,指定函数的名称、参数和返回值类型。
4. 调用函数:可以使用直接调用函数的方式或通过存储过程调用函数。
5. 创建触发器:可以使用CREATE TRIGGER语句创建触发器,用于在数据插入、更新或删除时触发特定的操作。
6. 修改和删除对象:可以使用ALTER PROCEDURE、DROP PROCEDURE、DROP FUNCTION等语句修改或删除已存在的PL/SQL对象。
四、示例以下是一个简单的PL/SQL程序示例,用于将输入的字符串转换为大写并输出:```plsqlDECLAREv_str VARCHAR2(100);v_upper VARCHAR2(100);BEGIN-- 获取输入字符串:in_str := 'hello world';v_str := :in_str;-- 将字符串转换为大写并输出v_upper := UPPER(v_str);DBMS_OUTPUT.PUT_LINE('转换后的字符串为: ' || v_upper);END;```在上述示例中,我们使用了DECLARE语句声明了两个变量v_str 和v_upper,分别用于存储输入的字符串和转换后的结果。
PLSQL语法

PLSQL语法Procedural Language和SQL的结合体。
通过增加变量、控制语句,使我们可以写些逻辑更加复杂的数据库操作语句框架组成declare – 可选声明各种变量或游标的地⽅。
begin – 必要开始执⾏语句。
--单⾏注释语句⽤两个连在⼀起的‘-’表⽰。
/*多⾏注释语句,可以换⾏*/exception – 可选出错后的处理。
end; – 必要(请注意end后⾯的分号)简单helloworld程序1declare2 v_temp number(6):=123; /* := 是⼀个赋值符号 */3begin4 dbms_output.put_line('middle');5 dbms_output.put_line(v_temp);6end;注意要想显⽰程序的东西需要设置环境set serveroutput off -->关闭输出(默认关闭)set serveroutput on -->打开输出基本数据类型Number 数字型Int 整数型Pls_integer 整数型,产⽣溢出时出现错误Binary_integer 整数型,表⽰带符号的整数Char 定长字符型,最⼤255个字符Varchar2 变长字符型,最⼤2000个字符Long 变长字符型,最长2GBDate ⽇期型Boolean 布尔型(TRUE、FALSE、NULL三者取⼀)%type 表⽰不需要知道具体的⼀个字段类型,与指定的字段类型⼀致即可。
例如:v_empno emp.empno%type;%rowtype 与表结构完全⼀致 %rowtype 举例:1declare2 v_tt emp%rowtype;3begin4select*into v_tt from emp where empno=7521;5 dbms_output.put_line(v_tt.job);6 dbms_output.put_line(v_tt.sal);7end;89输出:SALESMAN101250varray定义语法TYPE VARRAY NAMEIS VARRAY(SIZE) OF ELEMENT TYPE [NOT NULL];其中,varray name是VARRAY数据类型的名称,size是正整数,表⽰可以容纳的成员的最⼤数量,每个成员的数据类型是element typeo默认时,成员可以取空值,否则需要使⽤NOT NULL加以限制。
plsql变量的声明和赋值

plsql变量的声明和赋值⼀、什么是PL-SQL PL-SQL是结合了Oracle过程语⾔和结构化查询语⾔(SQL)的⼀种扩展语⾔。
具体来说,PL-SQL就是在普通的SQL语句的基础上增加了编程语⾔的特点,将数据操作和查询语句组织在PL-SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语⾔。
使⽤PL-SQL有以下优点: 1、能够把⼀组SQL语句放到⼀个模块中。
使其更具模块化特点。
2、可以在PL-SQL中增加逻辑结构判断、循环等程序结构。
3、具有异常处理功能。
使程序不会中断。
4、减少⽹络交互,提⾼性能。
5、具有更好的移植性。
⼆:pl sql 程序的组成DECLARE ……声明部分BEGIN --程序开始 ……程序执⾏部分EXCEPTION ……异常处理END; ……结束程序⼆:定义变量 DECLARE变量的名称name 数据类型type;⽰例: DECLAREv_name varchar2(20); --声明⼀个字符串类型的变量v_age number:=&age; --声明⼀个数字类型的变量&age表⽰输⼊数据,会临时弹出⼀个输⼊框让我们输⼊数据。
变量的赋值⽅法1.变量的名称name 数据类型type := 给变量赋初始值2.在内容部分 select 列名 into 变量名;三:命名规则1、⾸字母必须是英⽂字母,其后可以是字母,数字,$ ,#,和_下划线2.变量名长度不超过30个字符3.变量名中不能有空格4.变量名不能使⽤关键字命名四.Oracle中注意事项( DBMS_OUTPUT.PUT_LINE():输出语句)1.全部的保留字,Oracle内置的函数,程序包以及⽤户定义的类型都应该⼤写。
2.变量前因加上前缀,表⽰该变量的变量类型。
例(1):varvhar2() v_变量名(2)常量时 c_变量名(3)异常时 e_异常名3.每⾏只写⼀句语句,逗号后⾯以及运算符前后都应该加上空格4.变量名称应都使⽤有意义的名称命名5.命名使⽤“_”连接⽅式⽽不使⽤⼤⼩写混写。
plsql使用技巧

plsql使用技巧PL/SQL是Oracle数据库的一种编程语言,可以用于编写存储过程、触发器、函数等程序。
本文将从以下几个方面介绍PL/SQL的使用技巧:一、变量和常量的使用1.1 变量的定义在PL/SQL中,可以使用DECLARE语句来定义变量。
例如:DECLAREv_name VARCHAR2(100);BEGINv_name := 'John';END;1.2 常量的定义在PL/SQL中,可以使用CONSTANT关键字来定义常量。
例如:DECLAREc_pi CONSTANT NUMBER := 3.1415926;BEGINNULL;END;1.3 变量和常量的命名规则在PL/SQL中,变量和常量的命名规则与其他编程语言类似。
变量和常量的名称必须以字母开头,并且只能包含字母、数字和下划线。
二、条件语句的使用2.1 IF语句IF语句用于根据条件执行不同的代码块。
例如:DECLAREv_age NUMBER := 18;BEGINIF v_age >= 18 THENDBMS_OUTPUT.PUT_LINE('You are an adult.');ELSEDBMS_OUTPUT.PUT_LINE('You are a minor.');END IF;END;2.2 CASE语句CASE语句用于根据不同情况执行不同代码块。
例如:DECLAREv_day_of_week NUMBER := 5;BEGINCASE v_day_of_weekWHEN 1 THEN DBMS_OUTPUT.PUT_LINE('Monday');WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('Tuesday');WHEN 3 THEN DBMS_OUTPUT.PUT_LINE('Wednesday'); WHEN 4 THEN DBMS_OUTPUT.PUT_LINE('Thursday'); WHEN 5 THEN DBMS_OUTPUT.PUT_LINE('Friday');ELSE DBMS_OUTPUT.PUT_LINE('Weekend');END CASE;END;三、循环语句的使用3.1 FOR循环FOR循环用于执行一组代码块一定次数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PL/SQL在from后面使用变量,以及输入'&字符'的方法
在from后面使用变量
CREATE OR REPLACE FUNCTION GET_TABLE_COUNT(
I_TabNa IN VARCHAR2 ,
I_Owner IN VARCHAR2 DEFAULT NULL
)
RETURN NUMBER
IS
V_RtnVal NUMBER ;
V_CursorId INTEGER ;
V_SqlStr VARCHAR2(300) ;
BEGIN
V_CursorId := DBMS_SQL.OPEN_CURSOR ;
IF LENGTHB( RTRIM( LTRIM( NVL( I_Owner , '' ) ) ) ) = 0 THEN
V_SqlStr := 'SELECT COUNT(*) FROM ' || I_TabNa ;
ELSE
V_SqlStr := 'SELECT COUNT(*) FROM ' || I_Owner|| '.' || I_TabNa ; END IF ;
DBMS_SQL.PARSE( V_CursorId , V_SqlStr , DBMS_SQL.V7 ) ;
DBMS_SQL.DEFINE_COLUMN( V_CursorId , 1 , 0 ) ;
IF DBMS_SQL.EXECUTE( V_CursorId ) = 0 THEN
NULL ;
END IF ;
IF DBMS_SQL.FETCH_ROWS( V_CursorId ) = 0 THEN
RETURN 0 ;
END IF ;
DBMS_SQL.COLUMN_VALUE( V_CursorId , 1 , V_RtnVal ) ;
DBMS_SQL.CLOSE_CURSOR( V_CursorId ) ;
RETURN V_RtnVal ;
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR( V_CursorId ) ;
-- DBMS_OUTPUT.PUT_LINE( V_SqlStr || SQLERRM ) ;
RETURN 0 ;
END GET_TABLE_COUNT;
试验结果:
SQL> select GET_TABLE_COUNT( 'tab' ) from dual ;
GET_TABLE_COUNT('TAB')
----------------------
22
SQL> select GET_TABLE_COUNT( 'spr' , 'testman') from dual ;
GET_TABLE_COUNT('SPR','TESTMAN
------------------------------
15
SQL> select GET_TABLE_COUNT( 'U_Oausr' , 'tm') from dual ;
GET_TABLE_COUNT('U_OAUSR','TM'
------------------------------
10
SQL>
说明:
-- DBMS_SQL.DEFINE_COLUMN( V_CursorId , 1 , 0 ) ; 里的“0”是什么意思?
DEFINE_COLUMN是用作定义数据类型的,不同的数据类型有不太的定义方式,这里面的“0”通俗点说就是“与…0‟一样的数据类型的意思”,比如定义长度为200的varchar2型的列的时候,可以简化为这样定义:DBMS_SQL.DEFINE_COLUMN( V_CursorId , 1 , 'tmpStr' , 200 ),更多的数据类型列的定义请查看oracle的pl/sql文档,里面很全。
-- 另外,怎么用联编变量?
联编变量是一种非常好的传递参数的方式,而且不容易出错。
但是既然称之为“联编变量”那就是它只能对Oracle中认为的变量进行联编,而刚才上面的例子中,表面是不能够作为变量的,因此不可以联编,Oracle中认为出现在逻辑表达式右边的才是变量,例如可以这样进行联编变量:......
V_SqlStr := 'SELECT COUNT(*) FROM TAB WHERE TName LIKE :I_Arg0 ' ;
DBMS_SQL.PARSE( V_CursorId , V_SqlStr , DBMS_SQL.V7 ) ;
V_TabName := 'MYTAB' ;
DBMS_SQL.BIND_VARIABLE( V_CursorId , ':I_Arg0' , V_TabName || '%' ) ;
......
8i以后的版本这样写也行
CREATE OR REPLACE FUNCTION GET_TABLE_COUNT(
I_TabNa IN VARCHAR2 ,
I_Owner IN VARCHAR2 DEFAULT NULL
)
RETURN NUMBER
IS
V_RtnVal NUMBER ;
V_TabName VARCHAR2(300) ;
BEGIN
IF LENGTHB( RTRIM( LTRIM( NVL( I_Owner , '' ) ) ) ) = 0 THEN
V_TabName := I_TabNa ;
ELSE
V_TabName := I_Owner|| '.' || I_TabNa ;
END IF ;
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || V_TabName INTO V_RtnVal ;
RETURN V_RtnVal ;
EXCEPTION
WHEN OTHERS THEN
RETURN 0 ;
END GET_TABLE_COUNT ;
SQL*PLUS环境输入'&字符'的方法
我们知道在SQL*PLUS默认环境里会把'&字符'当成变量来处理.
有些时候我们也需要在SQL>的符号下输入'&字符', 只需要改变SQL*PLUS下一个环境变量define即可.
SQL> set define off;
是把默认的&绑定变量的功能取消, 可以把'&字符'当成普通字符处理
SQL> set define on;
打开&绑定变量的功能, &后面的字符串当变量使用.
SQL> show define;
查看当前SQL*PLUS的define状态
举例说明:
---------------------------------------------------------------
SQL> CREATE TABLE TEST3 (
ID NUMBER (2) PRIMARY KEY,
NAME VARCHAR2 (20));
SQL> show define;
define "&" (hex 26)
SQL> insert into test3 values(1,'sgs&a&n');
Enter value for a: abc
Enter value for n: 456
old 1: insert into test3 values(1,'sgs&a&n')
new 1: insert into test3 values(1,'sgsabc456')
1 row created.
SQL> commit;
Commit complete.
SQL> set define off;
SQL> insert into test3 values(2,'sgs&a&n');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test3;
ID NAME
-- --------------------
1 sgsabc456
2 sgs&a&n。