`
hwpok
  • 浏览: 251939 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个高手写的Sql

阅读更多
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->create table temp_127
(
  id 
number(10),
  dtime date
);



create or replace PROCEDURE UT_REDIRECTOR_COUNT(id in number)
IS
  s_table_name 
VARCHAR2(32);
  s_sql 
VARCHAR2(2000);
  t_count 
NUMBER;
  c_count 
NUMBER;
BEGIN
  
--根据组ID生成组资源表的表名
  s_table_name := 'EMAILS_' ||id;
  
--查询此表是否存在的SQL
  --s_sql := 'SELECT COUNT(*) FROM user_tables WHERE TABLE_NAME = ''' || s_table_name || '''';
  --EXECUTE IMMEDIATE s_sql INTO t_count;
  EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = :t1'
    
into t_count USING s_table_name;
  
--如果表是否存在
  IF t_count = 1 THEN
    
--查询此表是否有此列
    --s_sql := 'SELECT COUNT(*) from USER_TAB_COLUMNS WHERE table_name=''' || s_table_name || ''' AND column_name = ''FIRST_NAME''';
    --dbms_output.put_line(s_sql);
    EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME=:t2 AND COLUMN_NAME = ''FIRST_NAME'''
       
into c_count USING s_table_name;
    
--EXECUTE IMMEDIATE s_sql INTO c_count;
    --dbms_output.put_line('存在表:' || s_table_name);
    IF c_count = 0 THEN
        s_sql :
= 'ALTER TABLE ' || s_table_name || ' ADD (REDIRECTOR_COUNT INT,FIRST_NAME VARCHAR2(256),LAST_NAME VARCHAR2(256),CONTENT_0 VARCHAR2(256),CONTENT_1 VARCHAR2(256),CONTENT_2 VARCHAR2(256))';
        
EXECUTE IMMEDIATE s_sql;
        
--dbms_output.put_line('没有字段:' || 'unsubscribe' || s_sql);
        s_sql := 'ALTER TABLE ' || s_table_name || ' MODIFY REDIRECTOR_COUNT DEFAULT 0';
        
EXECUTE IMMEDIATE s_sql;
        
COMMIT;
    
END IF;
  
END IF;
  
  exception
    
when others then
      
insert into temp_127(id,dtime)
        
values(id,sysdate);
      
commit;
END;

declare
  
cursor cur is
    
SELECT * 
      
FROM groups ORDER BY update_time desc;
  
  rec cur
%rowtype;
  progress_num 
varchar2(56);
  
begin
  
open cur;
  loop
    
fetch cur into rec;
    
exit when cur%notfound;
    
    UT_REDIRECTOR_COUNT(rec.id);
    
    progress_num:
= 'email_'||rec.id;
    
    dbms_application_info.set_client_info(progress_num);
  
end loop;
  
close cur;
end;

select client_info from v$session where client_info is not null;
分享到:
评论

相关推荐

    SQL高手篇:精妙SQL语句介绍

    要将数据从一个表(源表)拷贝到另一个表(目标表),可以使用`INSERT INTO 目标表(字段列表) SELECT 源表.字段1, 源表.字段2, ... FROM 源表`。这会根据指定的字段列表复制源表中的数据。 3. **显示文章、提交人...

    SQL高手速成SQL语法教学

    - **用途**:用于指定一个值的列表。 - **语法示例**: ```sql SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2,...); ``` - **实例**: ```sql SELECT name FROM employees ...

    【SQL语言技术文档】SQL优化篇,如何成为一位写优质SQL语句的绝顶高手

    【SQL语言技术文档】SQL优化篇,如何成为一位写优质SQL语句的绝顶高手

    Sql高手速成

    4. 视图(View):创建视图以简化复杂的查询逻辑,提供一个抽象的、易于使用的数据访问接口。 5. 存储过程和函数:编写存储过程和自定义函数,提高代码复用性和执行效率,同时实现业务逻辑的封装。 三、数据库设计...

    SQL高手速成

    《SQL高手速成》这本书是针对想要快速提升SQL技能的学习者设计的,旨在帮助读者从初学者阶段迅速成长为能够...而“A5下载- 更全的站长资源平台.url”则可能是一个链接,指向更多的学习资源或社区,供进一步学习和交流。

    SQL Server 2005数据库管理与应用高手修炼指南配套文件

    《SQL Server 2005数据库管理与应用高手修炼指南》是一本专注于SQL Server 2005这一数据库管理系统的学习资料。SQL Server 2005是微软公司推出的数据库平台,广泛应用于数据存储、分析和应用程序开发。这本书的配套...

    SQL高手篇精妙SQL语句介绍

    2. **复制表数据**:要从一个表(a)复制数据到另一个表(b),你可以使用`INSERT INTO`语句: ```sql INSERT INTO b(a, b, c) SELECT d, e, f FROM b; ``` 这将根据源表(b)的列d, e, f填充目标表(b)的列a, ...

    高手详解SQL性能优化十条经验

    本文将深入探讨高手们在实践中总结的十条SQL性能优化经验。 1. **避免模糊匹配**:使用LIKE '%parm1%'可能导致索引失效,降低查询效率。解决方法可以是改进前端程序,提供下拉列表限制输入范围,或在后台先筛选出...

    SQL高手速成.pdf

    - **OUTER JOIN**:返回至少在一个表中有匹配的所有行,分为LEFT OUTER JOIN和RIGHT OUTER JOIN。 - **CROSS JOIN**:返回第一个表中的每一行与第二个表中的每一行的笛卡尔积。 #### 约束 - **主键**:唯一标识表中...

    SQL 高手必备手册

    12. **视图**:虚拟表,由一个或多个SELECT语句的结果集组成,提供了一种简化复杂查询和保护数据的方式。 13. **索引**:用于加速数据检索的数据结构,包括唯一索引、主键索引、聚集索引和非聚集索引等。 14. **...

    SQL开发高手经典手册

    在数据库设计中,一个数据库由一个或多个表组成,如示例中的"Persons"表,包含记录(行)和字段(列)。 SQL(结构化查询语言)是用于管理和处理数据库的关键工具,它分为数据操作语言(DML)和数据定义语言(DDL)...

    SQL基础知识第2版.pdf

    SELECT语句的基本用法是从表中选取数据,并将结果存储在一个结果表中,该结果表也被称为结果集。在使用SELECT语句时,可以选择指定的列,或者使用星号(*)来选取表中的所有列。此外,SQL语句对大小写不敏感,即...

    SQL北大青鸟课后作业

    作业可能包含编写嵌套查询,例如在一个查询中使用另一个查询的结果作为条件。 8. 分页查询:LIMIT和OFFSET关键字用于实现查询结果的分页,这对于大型数据集的显示非常有用。学生可能需要学习如何设置这些限制来获取...

    SQL SERVER2000数据库备份和恢复存储过程.rar_SQL 备份_recovery in SQL_sql server

    在提供的文件列表中,"MySQL数据库函数.txt"和"从一个MySQL的例子来学习查询语句.txt"虽然不是SQL Server 2000的内容,但可以作为对比学习,了解不同数据库系统在备份恢复机制上的异同。"数据库查询结果的动态排序....

    SQL语言书写规则 高手总结

    - **规则**:逗号之后必须添加一个空格。 - **示例**: ```sql SELECT column1, column2 FROM table_name; ``` ##### 7. SQL语句折行 - **规则**:较长的语句可以分多行编写,通常对于`SELECT`, `FROM`, `ORDER ...

    SQL2000+winsock 服务器 客户端 通讯

    1、下了一个NetData控件,服务器与客户端的SQL2000通讯非常好用,方便,可是不能多数据库(客户端自由选择数据库) 2、下了一个WINSOCK与SQL2000的服务器与客户端通讯的源码,稍做修改后,客户端可以自由连接多个...

    帮你从SQL从入门到高手

    这个压缩包文件“帮你从SQL从入门到高手”显然旨在为初学者提供一个全面的学习路径,助其逐步掌握SQL的核心概念和技术,最终成为SQL高手。 SQL的基础包括以下几个主要部分: 1. **数据类型**:SQL支持多种数据类型...

Global site tag (gtag.js) - Google Analytics