oracle的sql怎么定义变量啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的sql怎么定义变量啊相关的知识,希望对你有一定的参考价值。

如在oracle的sql语句中,先定义一个变量a等于20110101(这个可以随便手工修改),然后insert into table1
select* from table2 where date=:a; 实现类似的功能,请问怎么做啊

create or replace procedure p_insert
(a  varchar2(8))
as
begin
insert into table1 select * from table2 where "date"=a;  
commit;
end;

上边是创建

执行时

begin
p_insert(\'20110101\') ;
end;

说一下,你这个a和表2里的类型必须都一致,都要是字符型,如果不是的话,输入参数a不可以变,你可以在表2里用to_char函数将日期转成这个格式

还有你表2里的字段叫date,这个是关键字,所以加了双引号

追问

不好意思,可能没说清楚,整个sql语句很长,很多地方都需要用到a这个变量的,那要把全部几百行的语句都写成存储过程啊

追答

写了存储过程后,你用记事本里替换一下就OK了啊

把所有的20110101换成a就好了,oracle只有存储过程里能用变量来处理,直接在sql上不太可能

参考技术A 不用存储过程那么麻烦的。。。

insert into table1 select* from table2 where date= &a;

执行的时候自动会跳出框让你填写a的值。。这里a是数值

如果a是字符或日期格式的的话那么改成

insert into table1 select* from table2 where date= '&a';追问

怎么在sql语句中给a赋值啊

追答

&a 就这样。你运行就知道了

追问

我知道,我的目的是在程序开始时给a赋值,然后后面就可以直接把a当数字用了

追答

比如 select*from a where id=&n;你运行之后后提示你 请输入n的值,这个时候赋值。

这个是SQL里变量的使用方法。每次运行每次手工赋值 你不要这样?还是你要自动赋值?还是什么意思???

追问

比如,想实现类似其他程序语言的做法

先给a赋值,类似
a:=1;
然后
insert into table1 select* from table2 where date= '&a';把赋值后的a插入数据库中
然后我可以用程序给a赋不同的值,然后分别插入数据库中
感谢这位兄台了

追答

你是想要程序赋值?不要人为的赋值是这个意思吗?还是什么意思?
insert into table1 select* from table2 where date= '&a' 你执行一次,提示你输入a 的值,你输入1那么程序就执行insert into table1 select* from table2 where date= ‘1’
你再执行一次 那么还会提示再次输入a 的值,你输入2
那么程序就执行insert into table1 select* from table2 where date= ‘2’
从你的问题看,难道这样不是你要的结果吗?。。。。如果不是这样的话,还请详细说明吧。。。到底你要做什么
另外这个是SQL不是编译语言。不要拿其他的思维来想。。。
SQL是解释型语言不是编译型的。。。这因为如此所以,才有PL/SQL

追问

就是想要程序赋值啊,不想手工输入
想达到上面写的效果
我先在程序中给a赋值
然后insert into table1 select* from table2 where date= '&a';把赋值后的a插入数据库中

sql做不到吗?

追答

这样的话sql 做不到。。。不是oracle的话还有别的办法。。
oracle只能用PL/SQL 也就是用存储过程

本回答被提问者采纳
参考技术B a integer;
b date;

另外 你的where语句不对 where date=a追问

能不能写全点啊,谢谢

以上是关于oracle的sql怎么定义变量啊的主要内容,如果未能解决你的问题,请参考以下文章

oracle 中动态sql语句,表名为变量,怎么解

查询oracle数据库时,如何定义变量进行查询

oracle中表名能否用变量?怎么用

oracle 包中定义全局变量

oracle 函数,解释变量的使用和调用,本人菜鸟刚学oracle,看不懂函数间的使用,越详细越好

oracle declare语句中,怎么才能定义一个变量来作为查询条件,代码如下: