1.

create or replace procedure  test_prc(p_data_dt in date) IS

e_name emp.ename%type;     

begin

select ename into e_name

from emp where hiredate =p_data_dt;

DBMS_OUTPUT.PUT_LINE(e_name || '---' ||p_data_dt); 

 end;

此时输入的是日期型的参数:

SQL> call test_prc(date'1980-12-17');

SMITH---17-DEC-80

Call completed.

---------------------------------------------------------------------

2.

create or replace procedure  test_prc(p_data_dt in VARCHAR) IS

e_name emp.ename%type;

v_data_dt DATE :=to_date(p_data_dt,'YYYY-MM-DD');    

begin

select ename into e_name

from emp where hiredate =v_data_dt;

DBMS_OUTPUT.PUT_LINE(e_name || '---' ||v_data_dt); 

 end;

SQL> call test_prc('1980-12-17');

SMITH---17-DEC-80

Call completed.

-------------------------------------------------------------------

3.

create or replace procedure test_prc(p_data_dt in VARCHAR) IS

e_name emp.ename%type;

begin

select ename into e_name

from emp where hiredate =to_date(P_data_dt,'yyyy-mm-dd');

DBMS_OUTPUT.PUT_LINE(e_name || '---' ||P_data_dt);

 end;

SQL> exec test_prc('1980-12-17');

SMITH---1980-12-17

PL/SQL procedure successfully completed.

4.

create or replace procedure test_prc(p_data_dt in VARCHAR) IS

org dwm.debit_card_org.card_open_org%type;

begin

select dwm.debit_card_org.card_open_org into org

from dwm.debit_card_org  where data_dt =to_date(P_data_dt,'yyyy-mm-dd')

and rownum<2;

DBMS_OUTPUT.PUT_LINE(org  || '---' ||P_data_dt);

end;

exec test_prc(2013-01-01);

SQL> exec test_prc(2013-01-01);

BEGIN test_prc(2013-01-01); END;

*

ERROR at line 1:

ORA-01840: input value not long enough for date format

ORA-06512: at "DWM.TEST_PRC", line 4

ORA-06512: at line 1

exec test_prc('2013-01-01');

---------------------------------------------------------------------------------------

5.

create or replace procedure test_prc(p_data_dt  VARCHAR2) IS

org dwm.debit_card_org.card_open_org%type;

begin

select dwm.debit_card_org.card_open_org into org

from dwm.debit_card_org  where data_dt =to_date(P_data_dt,'yyyy-mm-dd')

and rownum<2;

DBMS_OUTPUT.PUT_LINE(org  || '---' ||P_data_dt);

end;

----------------------------------------------------------------

6.

create or replace procedure test_prc(p_data_dt in NUMBER) IS

e_name emp.ename%type;

v_data_dt DATE :=to_date(p_data_dt,'YYYY-MM-DD');

begin

select ename into e_name

from emp where hiredate =v_data_dt;

DBMS_OUTPUT.PUT_LINE(e_name || '---' ||v_data_dt);

 end;

SQL> exec test_prc(19801217);

PL/SQL procedure successfully completed.

SQL> set serveroutput

SP2-0265: serveroutput must be set ON or OFF

SQL> set serveroutput on

SQL> exec test_prc(19801217);

SMITH---17-DEC-80

PL/SQL procedure successfully completed.

7.

SQL> create table test_2(id int,data_dt DATE);

Table created.

SQL>  insert into test_2 values(1,to_date(20130101,'yyyymmdd'));

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test_2;

ID DATA_DT

---------- ---------

  1 01-JAN-13

create or replace procedure test_prc(p_data_dt in VARCHAR) IS

ID test_2.ID%type;

    begin

select ID into ID

from test_2 where data_dt =to_date(p_data_dt,'yyyymmdd');

DBMS_OUTPUT.PUT_LINE(ID || '---' ||p_data_dt);

 end;

SQL> exec test_prc(20130101);

1---20130101

PL/SQL procedure successfully completed.

SQL> exec test_prc('20130101');

1---20130101

PL/SQL procedure successfully completed.

SQL> exec test_prc(2013-01-01);

BEGIN test_prc(2013-01-01); END;

*

ERROR at line 1:

ORA-01840: input value not long enough for date format

ORA-06512: at "SCOTT.TEST_PRC", line 5

ORA-06512: at line 1

SQL> exec test_prc('2013-01-01');

BEGIN test_prc('2013-01-01'); END;

*

ERROR at line 1:

ORA-01843: not a valid month

ORA-06512: at "SCOTT.TEST_PRC", line 5

ORA-06512: at line 1

8.

create or replace procedure test_prc(p_data_dt in VARCHAR) IS

ID test_2.ID%type;

    begin

select ID into ID

from test_2 where data_dt =to_date(p_data_dt,'yyyy-mm-dd');

DBMS_OUTPUT.PUT_LINE(ID || '---' ||p_data_dt);

 end;

SQL> exec test_prc(2013-01-01);

BEGIN test_prc(2013-01-01); END;

*

ERROR at line 1:

ORA-01840: input value not long enough for date format

ORA-06512: at "SCOTT.TEST_PRC", line 5

ORA-06512: at line 1

SQL> exec test_prc('2013-01-01');

1---2013-01-01

PL/SQL procedure successfully completed.

9.

create or replace procedure  test_prc(p_data_dt in VARCHAR) IS

ID test_2.ID%type;

    begin

/*select ID into ID

from test_2 where data_dt =to_date(p_data_dt,'yyyy-mm-dd');  */

DBMS_OUTPUT.PUT_LINE(ID || '---' ||p_data_dt); 

 end;

SQL> exec test_prc('2013-01-01');

---2013-01-01

PL/SQL procedure successfully completed.

SQL> exec test_prc(2013-01-01);

---2011

PL/SQL procedure successfully completed.

但是在PL/SQL工具里可以直接选择字符窜,就不会出现这种问题,如下图:

pl/sql 关于变量定义的问题的更多相关文章

  1. pl/sql基础知识—定义并使用变量

    n  介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...

  2. PL/SQL之--变量

    一.PL/SQL 简介 PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/SQL是oracle对sql语句的一种扩展,在普通SQL语句的使用上 ...

  3. PL/SQL编程—变量

    SQL> declare c_tax_rate ,):=0.03; v_name ); v_passwd ); v_sale ,); v_tax_sale ,); begin select na ...

  4. 基于oracle 的PL/SQL编程 -变量使用

    1. 需要开启的服务:  本机安装的oracle ,默认是开机启动服务的,开机时间太慢,关闭了,需要手动打开: OracleDBConsoleorcl OracleOraDb10g_home1iSQL ...

  5. sql语句变量定义和样例

    变量和与常量 1.定义和使用局部变量说明:局部变量是用户可自定义的变量,它的作用范围仅在程序内部.局部变量的名称是用户自定义的,命名的局部变量名要符合SQL Server 2000标识符命名规则,必须 ...

  6. SQL Server 变量定义

    declare @id intdeclare @name char(10) --注意:char(10)为10位,要是位数小了会让数据出错set @id=1 set @name='sssss'selec ...

  7. SQL 将变量定义为Table类型

    ),a2 ,),a4 DATETIME,a5 UNIQUEIDENTIFIER) ,11.22,GETDATE(),NEWID()) ,11.22,GETDATE(),NEWID()) ,11.22, ...

  8. PL/SQL编程--变量声明及赋值

    declare v_price ,);--单价 v_usenum number;--水费字数 v_usenum2 number;--使用吨数 begin v_price:=2.45;--每吨单价 v_ ...

  9. 二十四、oracle pl/sql 变量

    一.变量介绍在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有:1).标量类型(scalar)2).复合类型(composite) --用于操作单条记录3).参照类型(refer ...

随机推荐

  1. ubuntu 12.04 编译安装 nginx

    下载源码包 nginx 地址:http://nginx.org/en/download.html 编译前先安装两个包: 直接编译安装会碰到缺少pcre等问题,这时候只要到再安装两个包就ok sudo ...

  2. JSON 学习总结 <一>:什么是JSON

    JSON的相关资料和博客很多,JSON无处不用,最近项目中一直要用到JSON,今天没有加班,就写下,算是对自己的总结,对JSON又一次深入的认识. 废话不多了,直接进入今天的主题: 如题:今天就介绍下 ...

  3. jQuery各种选择器总结

    首先介绍几个简单的: id选择器 $('#p1').html('<font color='red'>nihao</font>); 类选择器:表示页面上所有应用了a样式的标签 $ ...

  4. Spring Framework jar官方直接下载路径

    SPRING官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: h ...

  5. [解答]对‘’未定义的引用 collect2: 错误: ld 返回 1

    写的makefile适用于32位,但是放到64位机器上make就有问题. 需要在makefile中gcc -o....的结尾加上-pthread,例如: bloomfilter.o: bloomfil ...

  6. c#基础-----数据类型,转义字符,引用类型,类型转换

    数据类型,转义字符,引用类型,类型转换 百度一下

  7. Linq XML

    写得比较啰嗦,自己记载备用   1 public class XmlFunction   2     {   3         private static XDocument _doc = new ...

  8. LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...

  9. mysql远程连接

    多人开发时,每人一份程序文件.但是有时需要公用一个份数据库.这时就需要数据库能远程连接. 现在以mysql为例演示一下. 这里远程连接可以 1.允许固定客户端ip登陆. select host,use ...

  10. <string> <string.h>

    在C++开发过程中经常会遇到两个比较容易混淆的头文件引用#include<string.h> 和 #include<string>,两者的主要区别如下: #include< ...