• SQL随记(一)


    1.关于define表示定义

    2.sql%rowcount用于记录修改的条数,必须放在一个CUD语句后面执行,无法在select中使用。

    3.两种调用过程的关键字:exec和call

     两者区别:

    (1)exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制. 

    (2)存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上()

    4.复制表数据,用where 1=0等;

    5.关于&和&&的区别:看http://blog.csdn.net/studyvcmfc/article/details/7055258;

    主要区别在与:

    &username和&&usernae都会在sqlplus执行的时候,会提示你输入一个username对应的值。

    但&输入一次后,下次遇到还要继续输入;而&&输入一次后,下次遇到会默认选择上一次输入的内容。

    6.授权:grant

    回收权限:remvoke 

    define numrows=10000000  --definde 表示定义变量
    drop table big_table purge;
    
    create table big_table
    as
    select rownum id, OWNER, OBJECT_NAME, SUBOBJECT_NAME, OBJECT_ID,
    DATA_OBJECT_ID, OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP,
    STATUS, TEMPORARY, GENERATED, SECONDARY, NAMESPACE, EDITION_NAME
      from all_objects
     where 1=0
    /
    
    alter table big_table nologging;
    
    declare
      l_cnt number;
      l_rows number := &numrows;
    begin
      insert /*+ append */
      into big_table
      select rownum id, OWNER, OBJECT_NAME, SUBOBJECT_NAME, OBJECT_ID,
      DATA_OBJECT_ID, OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP,
      STATUS, TEMPORARY, GENERATED, SECONDARY, NAMESPACE, EDITION_NAME
      from all_objects
      where rownum <= &numrows; --numrows的值为10000000
      --
      l_cnt := sql%rowcount;--sql%rowcount用于记录修改的条数
      commit;
      while (l_cnt < l_rows)
      loop
        insert /*+ APPEND */ into big_table
        select rownum+l_cnt,OWNER, OBJECT_NAME, SUBOBJECT_NAME, OBJECT_ID,
        DATA_OBJECT_ID, OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP,
        STATUS, TEMPORARY, GENERATED, SECONDARY, NAMESPACE, EDITION_NAME
        from big_table a
        where rownum <= l_rows-l_cnt;
        l_cnt := l_cnt + sql%rowcount;
        commit;
      end loop;
    end;
    /
    
    alter table big_table add constraint
    big_table_pk primary key(id);
    
    exec dbms_stats.gather_table_stats( user, 'BIG_TABLE', estimate_percent=> 1);--exec就是调用存储过程,1但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制. 2存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上(). 
    

      

    connect / as sysdba
    define username=eoda
    define usernamepwd=foo
    create user &&username identified by &&usernamepwd;
    grant dba to &&username;
    grant execute on dbms_stats to &&username;--给dbms_stats过程授予权限
    grant select on V_$STATNAME to &&username;--赋予查询权限
    grant select on V_$MYSTAT   to &&username;
    grant select on V_$LATCH    to &&username;
    grant select on V_$TIMER    to &&username;
    conn &&username/&&usernamepwd
    

      

  • 相关阅读:
    页面表单里的图片上传ENCTYPE="multipart/form-data"
    OSGI
    httpClient使用中报错org.apache.commons.httpclient.HttpMethodBase
    DNSPod--国内最早提供免费智能DNS产品的网站,致力于为各类网站提供高质量的多线智能DNS免费解析
    spring security 一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架
    Unable to parse request org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. null
    swfupload 上传报 security error # 2049 (security) 安全错误问题
    如何强制指定输入的参数必须为数字
    弹性盒子模型子元素垂直和水平居中
    Git常见错误处理
  • 原文地址:https://www.cnblogs.com/lirenzhujiu/p/7019041.html
Copyright © 2020-2023  润新知