内容同上 ,在线等,解决即给分
解决方案 »
- [求助]ORACLE中使用 Database link 怎么查询连接库里的序列值?
- ORA -00600 [kcblasm_1],[103]
- ORACLE写脚本实现数据大批量更新
- 高手请给我个在linux下安装oracle8.1.7全面优化主要参数设置的方案,
- 请问怎么把下面的sql server的sql改成oracle的?在线等,谢谢!
- 有谁知道,这样的sql如何写?
- oracle中的日期格式问题
- 启动数据库时的错误
- 权限问题,用什么用户可以。。。。
- 如何将number->char?
- 系统重装了,那个oracle数据库源文件怎么恢复?
- Oracle Database Configuration Assistant安装失败,
主键名称、外键在all_constraints
索引在all_indexes
但主键也会成为索引,所以主键也会在all_indexes里面。
具体需要的字段可以DESC下这几个view,dba登陆的话可以把all换成dba。
select * from user_indexes
where uniqueness = 'NONUNIQUE'查询用户表的主键(聚集索引):
select * from user_indexes
where uniqueness = 'UNIQUE'晕,在楼主的提示下,查不多弄出来了:):):)
只能查询当前用户的table;
connect tcm/tcm;
select * from user_tables;
只能查tcm用户的表
也可以用spool
eg:
SQL> spool info.txtSQL> select * from test; AGE NAME---------- -------------------- 23 jack1 row selected.SQL> spool offSQL> !vi info.txt
将以上的查询信息保存到了当前目录下的info.txt文件中。
select cons.* from all_cons_columns cons, all_constraints con
where con.constraint_type='P'
and cons.table_name = '表名'
and cons.constraint_name=con.constraint_name;
/*2-获取本用户下的主键字段*/
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = '表名'
execute DBMS_FGA.ADD_POLICY(object_schema=>'用户名‘,object_name=>'所有表’,policy_name=>'策略名‘);然后在所有表中怎么表示呢?all_tables,user_tables,all_tab_comments都不好用,求高人解答!!!
FOR BONUS_CURSOR IN(SELECT EMPNO FROM T_EMP)
LOOP
PK_EMP.sp_bonus(BONUS_CURSOR.EMPNO,'201205');
END LOOP;
END;create or replace PACKAGE PK_EMP IS
PROCEDURE SP_BONUS(E_ID T_SAL.EMPNO%TYPE, Y_Months VARCHAR2);
FUNCTION SF_MONTHS(E_id T_EMP.Empno%TYPE, Y_Month VARCHAR2) RETURN NUMBER;
END PK_EMP;create or replace PACKAGE BODY PK_EMP ASPROCEDURE SP_BONUS
(E_ID T_SAL.EMPNO%TYPE,
Y_Months VARCHAR2)
IS
ROW_T_SAL T_SAL%ROWTYPE;
MONEY NUMBER;
NUM NUMBER;
BEGIN
SELECT COUNT(*) INTO NUM FROM T_EMP WHERE MGRNO=E_ID;
SELECT * INTO ROW_T_SAL FROM T_SAL WHERE EMPNO=E_ID;
MONEY:=SF_MONTHS(ROW_T_SAL.EMPNO, y_months);
IF row_t_sal.GRADE<7 AND NUM=0 THEN
MONEY:= row_t_sal.SAL+MONEY*ROW_T_SAL.COMM-ROW_T_SAL.LEAVE_SAL;
ELSE
MONEY:= row_t_sal.SAL+MONEY*ROW_T_SAL.COMM;
END IF;
UPDATE T_EMP SET BONUS=MONEY WHERE EMPNO=E_ID;
DBMS_OUTPUT.PUT_LINE(E_ID||'号员工'|| y_months||'的工资为:'||MONEY);
END SP_BONUS;
FUNCTION SF_MONTHS
(E_id T_EMP.Empno%TYPE,
Y_Month VARCHAR2)
RETURN NUMBER
AS
S_Months NUMBER;
V_DATE DATE:=LAST_DAY(TO_DATE(Y_Month,'YYYYMM'));
V_C_DATE DATE;
BEGIN
SELECT CHANGE_DATE INTO V_C_DATE FROM T_EMP WHERE EMPNO=E_id;
SELECT ROUND((months_between(CASE WHEN V_C_DATE IS NULL THEN V_DATE
WHEN V_C_DATE<=V_DATE THEN V_C_DATE
ELSE V_DATE END, HIREDATE)-
MONTHS_BETWEEN(NVL(RESUME_DATE,SYSDATE), NVL(SUSPEND_DATE,SYSDATE))),0)
INTO S_Months
FROM T_EMP WHERE EMPNO=E_id;
RETURN(S_Months);
END SF_MONTHS;END PK_EMP;
CREATE TABLE ORDER_DEL
(
ORDER_NO VARCHAR2(6),
ORDER_ITEM VARCHAR2(2),
PRODUCT_NO VARCHAR2(6) NOT NULL,
PRODUCT_CNT NUMBER(5),
ORDER_PRICE NUMBER(5,2),
CONSTRAINT PRODUCT_CNT_CK
CHECK(PRODUCT_CNT>0),
CONSTRAINT ORDER_DEL_PK
PRIMARY KEY(ORDER_NO,ORDER_ITEM)
);