十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
不需要加declare的,直接在"IS(或AS)"后面紧跟着定义这个存储过程的局部变量即可.
创新互联是一家专注于成都网站设计、成都网站建设、外贸网站建设与策划设计,肃宁网站建设哪家好?创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:肃宁等地区。肃宁做网站价格咨询:18980820575
你只能在存储过程中使用动态的匿名块了。
比如:
create or replace procedure pro1(p_tname varchar2) is
v_dy_sql_block varchar2(32767) ;
begin
v_dy_sql_block := ' declare '||
' l_row '||p_tname||'%rowtype ;' ||
'....' ;
execute immediate v_dy_sql_block ;
end;
[TEST1@orcl#15-4月 -10] SQLset serveroutput on
[TEST1@orcl#15-4月 -10] SQLdeclare
2 v_num number;
3 begin
4 select count(*) into v_num from tab;
5 dbms_output.put_line(v_num);
6 end;
7 /
15
PL/SQL 过程已成功完成。
这个的number(2)中的2指的是数字精度或者说是数字的最大长度。
如果只有数字长度而没有小数位数的话,接收的结果是一个最大为两位的整数。
declare
n1 number(2);
n2 number(2);
n3 number(2);
begin
n1 := 19.123;
n2 := 9.123;
-- n3 := 999.123; -- 这里将会报错
dbms_output.put_line(n1); -- 这里返回结果 19
dbms_output.put_line(n2); -- 这里返回结果 9
end;
NUMBER Datatype
The NUMBER datatype is used to store zero, positive and negative
fixed and floating point numbers with magnitudes between 1.0 x
10
digits of precision. If you specify an arithmetic expression whose
value has a magnitude greater than or equal to 1.0 x 10
returns an error. You can specify a fixed point number datatype
with this syntax:
NUMBER(p,s)
where:
p
is the precision, or the total number of digits. Oracle guarantees
the portability of numbers with precision ranging from 1 to 38.
s
is the scale, or the number of digits to the right of the decimal
point. The scale can range from -84 to 127.
You can also use one of these alternate forms:
NUMBER(p)
is a fixed point number with precision p and scale 0.
NUMBER
is a floating point number with precision 38. Note that a scale
value is not applicable for floating point numbers.
SCALE AND PRECISION
Specify the scale and precision of a number column for extra
integrity checking on input. Specifying scale and precision does
not force all values to a fixed length. If a value exceeds the
precision, Oracle returns an error. If a value exceeds the scale,
Oracle rounds it.
These examples show how Oracle stores data using different
precisions and scales.
Actual Data Specified as Stored as
----------- ------------ ---------
7456123.89 NUMBER 7456123.89
7456123.89 NUMBER (9) 7456124
7456123.89 NUMBER (9,2) 7456123.89
7456123.89 NUMBER (9,1) 7456123.9
7456123.8 NUMBER (6) exceeds precision
7456123.8 NUMBER (15,1) 7456123.8
7456123.89 NUMBER (7,-2) 7456100
7456123.89 NUMBER(7,2) exceeds precision
NEGATIVE SCALE
If the scale is negative, the actual data is rounded to the
specified number of places to the left of the decimal point. For
example, a specification of (10,-2) means to round to hundreds.
SCALE GREATER THAN PRECISION
You can specify a scale that is greater than precision, although it
is uncommon. In this case, the precision specifies the maximum
number of digits to the right of the decimal point. As with all
number datatypes, if the value exceeds the precision, Oracle returns
an error. If the value exceeds the scale, Oracle rounds the value.
For example, a column defined as NUMBER(4,5) requires a zero for the
first digit after the decimal point and rounds all values past the
fifth digit after the decimal point. The following examples show
the effects of a scale greater than precision:
Actual Data Specified as Stored as
----------- ------------ ---------
.01234 NUMBER(4,5) .01234
.00012 NUMBER(4,5) .00012
.000127 NUMBER(4,5) .00013
.0000012 NUMBER(2,7) .0000012
.00000123 NUMBER(2,7) .0000012
FLOATING POINT NUMBERS
Oracle also allows you to specify floating point numbers. A
floating point value either can have a decimal point anywhere from
the first to the last digit or can omit the decimal point
altogether. A scale value is not applicable to floating point
numbers because there is no restriction on the number of digits that
can appear after the decimal point.
You can specify floating point numbers with the appropriate forms of
the NUMBER datatype discussed in the section on page -. Oracle
also supports the ANSI datatype FLOAT. You can specify this
datatype using one of these syntactic forms:
FLOAT
specifies a floating point number with decimal precision 38, or a
binary precision of 126.
FLOAT(b)
specifies a floating point number with binary precision b.
The precision b can range from 1 to 126.
To convert from binary to decimal precision, multiply b by 0.30103.
To convert from decimal to binary precision, multiply the decimal
precision by 3.32193. The maximum of 126 digits of binary precision
is roughly equivalent to 38 digits of decimal precision.
你在写存储过程的时候就按照语法 CREATE OR REPLACE PROCEDURE P_NAME IS BEGIN END P_NAME; 就行了,但是你要是在SQL window或者command window中调试一段代码的话,就要用declare声明。
呃,一个输入变量,一个输出变量不就结了
create or replace function Fun_Multiplicative(v_input in number) return number is
v_result number(8);
v_total number(8) :=1;
v_count number(5) :=1;
begin
while v_count = v_input loop
v_total := v_total * v_count;
v_count := v_count + 1;
end loop;
v_result := v_total;
return(v_result);
end Fun_Multiplicative;