oracle如何建标 oracle创建游标sql

oracle 如何建表

create table table_name

创新互联公司一直在为企业提供服务,多年的磨炼,使我们在创意设计,网络营销推广到技术研发拥有了开发经验。我们擅长倾听企业需求,挖掘用户对产品需求服务价值,为企业制作有用的创意设计体验。核心团队拥有超过10年以上行业经验,涵盖创意,策化,开发等专业领域,公司涉及领域有基础互联网服务西部信息中心app开发定制、手机移动建站、网页设计、网络整合营销。

(

姓名 VARCHAR2(10),

数字一 NUMBER,

数字二 NUMBER

)

这个太简单了。。。

(1)table_name自己命名 (2)三个选项如果不可以空值的话,后面加上not null(例如:数字一 number not null,)

oracle 新手请问如何建表

create table XXX(

字段A 字段类型,

字段B 字段类型

) tablespace SSS

XXX为表名

SSS为指定的表空间名(可以无视)

oracle 如何动态创建表

create or replace procedure sp_crt_tbl_from_dic(p_src_tbl varchar2,

p_tgt_tbl_name varchar2,

p_prt_flg varchar2,

p_tx_date varchar2) is

v_col varchar2(500) := '';

v_col_data_type varchar2(100) := '';

v_sql varchar2(25000) := '';

v_col_list varchar2(20000) := ' ';

v_prt_sql varchar2(2000) := '';

v_grant_sql varchar2(2000) := '';

v_crt_syn_sql varchar2(2000) := '';

v_drop_tbl_sql varchar2(2000) := '';

i_tbl_cnt number(1, 0) := 0;

v_step_no varchar2(3) := '';

begin

--step 1

v_step_no := '1';

select count(1) into i_tbl_cnt from tabs where table_name = p_src_tbl;

if (i_tbl_cnt = 0) then

sp_log('sp_crt_tbl', v_step_no, '3', p_tx_date, p_src_tbl || '不存在');

return;

end if;

--step 2

v_step_no := '2';

select count(1)

into i_tbl_cnt

from tabs

where table_name = p_tgt_tbl_name;

if (i_tbl_cnt 0) then

v_drop_tbl_sql := 'drop table ' || p_tgt_tbl_name;

execute immediate v_drop_tbl_sql;

end if;

v_step_no := '1';

sp_log('sp_crt_tbl_from_dic',v_step_no,'1',p_tx_date,p_tgt_tbl_name || '建表开始');

v_sql := 'create table ' || p_tgt_tbl_name || '(';

v_col := '';

v_col_data_type := '';

v_col_list := '';

for cur_col_name in (

SELECT T.COLUMN_NAME col_name,

CASE WHEN T.DATA_TYPE IN ('VARCHAR2', 'CHAR') THEN T.DATA_TYPE || '(' || T.DATA_LENGTH || ')'

WHEN T.DATA_TYPE IN ('NUMBER') THEN T.DATA_TYPE || '(' || T.DATA_PRECISION || ',' || T.DATA_SCALE || ')'

WHEN T.DATA_TYPE IN ('DATE') THEN T.DATA_TYPE ELSE '' END col_data_type

FROM COLS T

where T.TABLE_NAME = p_src_tbl

order by to_number(T.COLUMN_ID)) loop

v_col := trim(cur_col_name.col_name);

v_col_data_type := trim(cur_col_name.col_data_type);

v_col_list := trim(v_col_list) || trim(v_col) || ' ' || trim(v_col_data_type) || ',';

end loop;

v_sql := trim(v_sql) || trim(v_col_list) || ')';

v_sql := replace(v_sql, ',)', ')');

if (p_prt_flg = '1') then

v_prt_sql := ' partition by range (part_id) (partition prt_1 values less than(2),partition prt_2 values less than(3),partition prt_3 values less than(4),partition prt_4 values less than(5))';

v_sql := v_sql || v_prt_sql;

end if;

execute immediate v_sql;

sp_log('sp_crt_tbl_from_dic',v_step_no,'2',p_tx_date,p_tgt_tbl_name || '建表开始结束');

v_step_no := '2';

sp_log('sp_crt_tbl_from_dic', v_step_no,'1',p_tx_date,p_tgt_tbl_name || '赋权限开始');

v_grant_sql := 'grant select,insert,update,delete on ' || p_tgt_tbl_name ||

' to iclientoopr,iclientomoia';

if (v_grant_sql is not null) then

execute immediate v_grant_sql;

end if;

--- 给OPERQRY赋权限

v_grant_sql := 'grant select on ' || p_tgt_tbl_name || ' to OPERQRY';

if (v_grant_sql is not null) then

execute immediate v_grant_sql;

end if;

sp_log('sp_crt_tbl_from_dic',v_step_no,'2',p_tx_date,p_tgt_tbl_name || '赋权限结束');

--创建日标同义词

--step 4

v_step_no := '3';

v_crt_syn_sql := 'create or replace public synonym ' || p_tgt_tbl_name ||

' for iclientodata.' || p_tgt_tbl_name;

if (v_crt_syn_sql is not null) then

execute immediate v_crt_syn_sql;

end if;

sp_log('v_crt_syn_sql',v_step_no,'2',p_tx_date,p_tgt_tbl_name || '创建结束');

exception

when others then

sp_log('sp_crt_tbl_from_dic',v_step_no,'3',p_tx_date,p_tgt_tbl_name || '创建异常:' || SQLERRM);

end;

oracle中如何定义一个游标?

1.游标定义:\x0d\x0acursor XXXA is\x0d\x0a SELECT 语句;\x0d\x0aXXXB cursorName%rowtype;\x0d\x0a\x0d\x0aXXXA: 游标名\x0d\x0aXXXB: 游标行数据定义\x0d\x0a\x0d\x0a2. 打开游标:\x0d\x0a-- 打开之前最好先关一下,防止上次发生异常没有关掉而引发不必要的异常\x0d\x0a IF XXXA%ISOPEN THEN\x0d\x0a CLOSE XXXA;\x0d\x0a END IF;\x0d\x0a\x0d\x0aOpen XXXA ;\x0d\x0a Loop\x0d\x0a Fetch XXXA into XXXB;\x0d\x0a exit when XXXA%NOTFOUND;\x0d\x0a... ... 处理逻辑\x0d\x0a end loop;\x0d\x0a close XXXA;

Oracle 建表问题

用嵌套表

如下:

SQL create or replace type xiaoxiang as object(ch1 number,ch2 number,ch3 number

);

2 /

类型已创建。

SQL create type xiaoxiang_nt as table of xiaoxiang;

2 /

类型已创建。

SQL create table daxiang (id number,class number,xiaoxiang_col xiaoxiang_nt)nes

ted table xiaoxiang_col store as xiaoxiang_tab;

表已创建。

SQL insert into daxiang values(1,123,xiaoxiang_nt(xiaoxiang(1,2,3),xiaoxiang(4,

5,6)));

已创建 1 行。

SQL commit;

提交完成。

SQL

Oracle下如何用sql创建游标

For 循环游标

(1)定义游标

(2)定义游标变量

(3)使用for循环来使用这个游标

declare

--类型定义

cursor c_job

is

select empno,ename,job,sal

from emp

where job='MANAGER';

--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型

c_row c_job%rowtype;

begin

for c_row in c_job loop

dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);

end loop;

end;

Fetch游标

使用的时候必须要明确的打开和关闭

declare 

--类型定义

cursor c_job

is

select empno,ename,job,sal

from emp

where job='MANAGER';

--定义一个游标变量

c_row c_job%rowtype;

begin

open c_job;

loop

--提取一行数据到c_row

fetch c_job into c_row;

--判读是否提取到值,没取到值就退出

--取到值c_job%notfound 是false 

--取不到值c_job%notfound 是true

exit when c_job%notfound;

dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);

end loop;

--关闭游标

close c_job;

end;


本文标题:oracle如何建标 oracle创建游标sql
文章链接:http://scjbc.cn/article/doooooh.html

其他资讯