oracle 存储过程赋值的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 存储过程赋值的方法相关的知识,希望对你有一定的参考价值。
我想知道oracle的存储过程的变量,有几种赋值方式,分别是哪几种!
随便定义一个变量,简单写下方法就行!
格式:名字 类型 := 赋值内容
例子:aa varchar(5):= 'ss';
总共我知道的有4中:1.标量,2.显示变量,3声明记录,4索引表追问
那除了标量,其他的3个你举个例子吧,不用复杂,举例就行!
追答显示标量(表t,字段a,定义cc变量):cc t.a%type;
声明记录(类型:bb,定义cc变量):
TYPE bb IS RECORD (cc number(10), uu varchar(5));--先声明类型
cc bb;--在定义bb这种类型的变量
索引表(类型:bb,定义cc变量)
TYPE bb IS table OF (cc t.a%type, uu t.b%type) INDEX BY BINARY_INTEGER;--先声明类型
cc bb;--在定义bb这种类型的变量
上述答案为有操作,请自行试验,如有错误,请原谅!
CREATE OR REPLACE PROCEDURE test(var1 IN number,var2 out number) is
begin
var2 := var1;
end test;
2.
CREATE OR REPLACE PROCEDURE test(var1 IN number) is
var2 number :=var1;
begin
end test;
3.
CREATE OR REPLACE PROCEDURE test(var1 IN number) is
var2 number;
begin
var2 := var1;
END test;
4.
CREATE OR REPLACE PROCEDURE test(var1 IN number) is
var2 number;
CURSOR cur IS
select var1 from dual;
BEGIN
FOR rec in cur LOOP
var2 := rec.var1;
END LOOP;
END test;
5.
CREATE OR REPLACE PROCEDURE test(var1 IN number) is
var2 number;
BEGIN
select var1 into var2 from dual;
END test;
6.
CREATE OR REPLACE PROCEDURE test(var1 IN number) is
var2 number;
FUNCTION get_var(var_1 IN NUMBER) RETURN NUMBER IS
var_2 := NUMBER;
BEGIN
SELECT var_1 INTO var_2 FROM dual;
RETURN var_2;
END get_var;
BEGIN
var2 := get_var(var1);
END test; 参考技术B declare
vr_name varchar2(20);
begin
vr_name :='aaaaa';
end; 参考技术C 我知道的有两种,一种是直接赋值:varx := 5;,另一种是select …into…的方式:select a into x from t;
oracle存储过程中如何对一个变量累加赋值 最好有个例子
以一个从1+2+3+……100为例。
代码:
i int:=1; --定义变量i
j int:=0; --定义变量j
begin
while i<=100 --循环退出条件
loop --执行循环
j:=j+i; --循环累加值
i:=i+1; --依次为i赋值
end loop; --停止循环
Dbms_Output.Put_Line(j); --打印结果
end;
结果如下:
1、首先打开oracle数据库,如下图所示。
2、在Oracle中,对于函数的变量赋值,通常有三种方法来进行处理,直接赋值的方法,可以在声明变量的时候直接给变量进行赋值。
3、其次,可以使用SELECT语句对变量进行赋值,主要是SELECT INTO语句,如下代码示例,将变量v_minvar赋予Min(t.sal)的值。
4、最后就是动态SQL语句赋值了,如下代码。
参考技术B 图显IP:下面是一个用游标的存储过程,v_shixiaqu := to_char(to_number(v_region_code)+1);为变量赋值
create or replace procedure test
as
CURSOR c1 IS select parent_id from region where region_name = '市辖区' and region_code = region_name;
v_parent_id region.parent_id%type;
v_region_code region.region_code%type;
v_shixiaqu region.region_code%type;
v_errcode number;
v_errmsg varchar2(1000);
v_count number;
begin
open c1;
LOOP
fetch c1 into v_parent_id;
exit when c1%notfound;
select count(*) into v_count from region where region_id = v_parent_id;
if v_count <> 0 then
select region_code into v_region_code from region where region_id = v_parent_id;
v_shixiaqu := to_char(to_number(v_region_code)+1);
DBMS_OUTPUT.PUT_LINE(v_parent_id||'---'||v_shixiaqu );
update region
set region_code = v_shixiaqu
where parent_id = v_parent_id
and region_name = '市辖区';
commit;
end if;
--fetch c1 into v_parent_id;
end loop;
close c1;
exception
when others then
v_errcode := sqlcode;
v_errmsg := sqlerrm;
dbms_output.put_line( 'error code is ' || v_errcode || ' error message is ' || v_errmsg);
rollback;
end test;追问
我是想这样的!!!
就java中的 String str ="";
str+="123";
什么意思?
追问就像这样的
String str="";
for(int i=0;i<5;i++)
str+="000";
System.out.println("str="+str);
这个已经实现了啊,在loop里
参考资料:老k博客
参考技术C declarenum number;
begin
num := 1;
num := num + 1;
dbms_output.put_line(num);
end;
/ 参考技术D 你的补充
declare
v_bianliang varchar2(1000);
begin
v_bianliang := 'test';
for r in 1 .. 5 loop
v_bianliang := v_bianliang || ',';
end loop;
dbms_output.put_line(v_bianliang);
end;
以上是关于oracle 存储过程赋值的方法的主要内容,如果未能解决你的问题,请参考以下文章