oracle 建表空间,授权,建表,建存储过程脚本

本文详细介绍了如何使用PL/SQL创建数据库表空间、用户、表和存储过程,包括用户登录、文章阅读、用户收藏、系统装机统计等功能。
-- select sysdate from dual;

-- 以管理员身份登录PL/SQL, create tablespace
create tablespace YourProject_table_space datafile 'D:\oracle\data\customed\YourProject.dbf' size 100M;

-- create user and assign tablespace for this user
create user YourProject_admin_u identified by YourProject_admin_p default tablespace YourProject_table_space;

-- grant user privilege
grant connect,resource to YourProject_admin_u;



-- 以 YourProject_admin_u 身份登录 oracle 数据库,创建如下的表 及 存储过程

create table tblStatistic
(
  ID int
  ,UserID varchar2(50)
  ,UserName varchar2(50)
  ,Telephone int
  ,StatisticTypeID int --2:user login; 3:online draft; 4:audit or modify
  ,Title varchar2(500)
  ,ObjectID int -- if not have this value, fill 0
  ,OperDate Date
);

create table tblVideo 
( 
  ID int 
  ,Subject varchar2(50) 
  ,Description varchar2(50) 
  ,YoukuVideoUrl varchar2(1000) 
  ,YoukuVideoID varchar(50) 
  ,OperDate Date 
  ,ViewCount int 
  ,YoukuPlayUrl varchar2(1000)  
  ,DownloadUrl varchar2(1000) 
); 

-- 用户收藏
create table tblUserFavorite
(
       ID int
       ,UserID varchar2(50)
       ,UserName varchar2(50)
	   ,Telephone int
       ,ArticleID int
       ,ArticleTypeID int
	   ,Title varchar2(100)
       ,Description varchar2(500)
       ,OperDate date
       ,DocTypeID int -- (0-案例, 1-合同, 2-法律)
);

-- 用户咨询
create table tblUserConsultation
(
       ID int
       ,UserID varchar2(50)
       ,UserName varchar2(50)
       ,Telephone int
       ,RequestPeople varchar2(50)
       ,BusinessType varchar2(50)
	   ,BusinessSubType varchar2(50)
       ,Topic varchar2(100)
       ,Content varchar2(4000)
	   ,IsPublic numeric(1)
       ,OperDate date
);

-- 用户反馈
create table tblUserFeedback
(
       ID int
       ,UserID varchar2(50)
       ,UserName varchar2(50)
       ,Telephone int
	   ,Email varchar2(100)
       ,Content varchar2(1000)
       ,OperDate date
);

-- 文章阅读信息
create table tblArticleRead
(
	   ID int
       ,ArticleID int
       ,ArticleTypeID int
       ,ArticleType varchar2(50)
       ,ReadCount int
);

-- 系统装机统计
create table tblInstallDevice
(
	   ID int
       ,DeviceNumber varchar2(100)
       ,InstallDate date
);




-- store procedure
-- 增加文章阅读
create or replace procedure spAddArticleRead
(
       v_articleID int,
       v_articleTypeID int,
       v_articleType varchar2
)
as
         v_existCount int;
begin
       SELECT count(*) into v_existCount 
       from tblArticleRead where ArticleID=v_articleID and ArticleTypeID=v_articleTypeID;

      --dbms_output.put_line(v_existCount);
      if(v_existCount>=1) then
         --dbms_output.put_line('exists');
         update tblArticleRead set ReadCount=ReadCount+1 where ArticleID=v_articleID and ArticleTypeID=v_articleTypeID;
      else
         --dbms_output.put_line('not exists');
         insert into tblArticleRead
         (
               ID,ArticleID,ArticleTypeID
               ,ArticleType,ReadCount
         )
          select nvl(max(ID),0) + 1,v_articleID,v_articleTypeID
                 ,v_articleType,1
          from   tblArticleRead;
      end if;
end;

-- 增加用户收藏
create or replace procedure spAddMyFavorite
(
       v_UserID varchar2,
       v_UserName varchar2,
       v_Telephone varchar2,
       v_ArticleID int,
       v_ArticleTypeID int,
       v_Title varchar2,
       v_Description varchar2,
       v_DocTypeID int
)
as
         v_tmpWhere varchar2(4000);
         v_tmpSQL varchar2(4000);
         v_existCount int;
begin
       
      v_tmpWhere :='';

      if nvl(v_UserID,'X') !='X' then
          v_tmpWhere := v_tmpWhere || ' and UserID=''' || trim(v_UserID) || '''';
      end if;
      
      if nvl(v_UserName,'X') !='X' then
          v_tmpWhere := v_tmpWhere || ' and UserName=''' || trim(v_UserName) || '''';
      end if;
      
      if nvl(v_Telephone,'X') !='X' then
          v_tmpWhere := v_tmpWhere || ' and Telephone=''' || v_Telephone || '''';
      end if;
      
      if v_ArticleID >0 then
          v_tmpWhere := v_tmpWhere || ' and ArticleID=' || v_ArticleID ;
      end if;
      
      if v_ArticleTypeID >0 then
          v_tmpWhere := v_tmpWhere || ' and ArticleTypeID=' || v_ArticleTypeID;
      end if;
      
      if nvl(v_Title,'X') !='X' then
          v_tmpWhere := v_tmpWhere || ' and Title =''' || trim(v_Title) || '''';
      end if;
      
      if nvl(v_Description,'X') !='X' then
          v_tmpWhere := v_tmpWhere || ' and Description =''' || trim(v_Description) || '''';
      end if;
      
      if v_DocTypeID >-1 then
          v_tmpWhere := v_tmpWhere || ' and DocTypeID =' || v_DocTypeID  ;
      end if;
       
       --dbms_output.put_line(v_tmpWhere);

      if(length(v_tmpWhere)>0) then                  
           v_tmpWhere := ' where ' || substr(v_tmpWhere,5);
       end if;

       v_tmpSQL :='SELECT count(*) from tblUserFavorite ' || v_tmpWhere;
       EXECUTE IMMEDIATE v_tmpSQL into v_existCount;
       --dbms_output.put_line(v_tmpSQL);
       --dbms_output.put_line(v_existCount);

      if(v_existCount<1) then
         --dbms_output.put_line('not exists');

           insert into tblUserFavorite
          (
                 ID,UserID,UserName,Telephone
                 ,ArticleID,ArticleTypeID,Title,Description
                 ,OperDate,DocTypeID
          )
          select nvl(max(ID),0) + 1,v_UserID,v_UserName,v_Telephone
                 ,v_ArticleID,v_ArticleTypeID,v_Title,v_Description
                 ,to_date(sysdate),v_DocTypeID
          from   tblUserFavorite;
      else
          dbms_output.put_line('您已经收藏过此项!');
          raise_application_error(-20001,'您已经收藏过此项!');   
      end if;
end;

-- 添加装机信息
create or replace procedure spAddInstallDevice
(
       v_DeviceNumber varchar2
)
as
begin
      insert into tblInstallDevice
      (
             ID,DeviceNumber,InstallDate
      )
      select nvl(max(ID),0) + 1,v_DeviceNumber,to_date(sysdate)
      from   tblInstallDevice;
end;

-- 添加统计信息
create or replace procedure spAddStatisticContent
(
       v_UserID varchar2,
       v_UserName varchar2,
       v_Telephone varchar2,
       v_StatisticTypeID int,
       v_Title varchar2,
       v_ObjectID int
)
as
begin
      insert into tblStatistic
      (
             ID,UserID,UserName,Telephone
             ,StatisticTypeID,Title,ObjectID
             ,OperDate
      )
      select nvl(max(ID),0) + 1,v_UserID,v_UserName,v_Telephone
             ,v_StatisticTypeID,v_Title,v_ObjectID
            --,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
            ,to_char(sysdate)
      from   tblStatistic;
end;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值