zoukankan      html  css  js  c++  java
  • Oracle存储1.1

    1.生成一个表的简单sql语句

    CREATE OR REPLACE PROCEDURE proc_AutoGenerateSQL
    (
      tableName   VARCHAR2 ,--参数 需要操作的表名 大小写区别
      tableType   NUMBER , --  参数  对表操作类型  0 =insert 1 =update 2=select
      sqlOrNet    NUMBER  ,-- 参数 需要生成那种格式sql 1 = sql  0  =net
      tableOutStr OUT VARCHAR2 --参数 输出需要的sql
    )
    IS
        sql_columns VARCHAR2(2000);
        sql_columnvalues VARCHAR2(2000);
      BEGIN
          BEGIN
            DECLARE
               CURSOR  c_t IS
               SELECT   column_id, column_name, data_type
               FROM user_tab_columns where table_name = ''||tableName||'' order by column_id;
               c_r  c_t%ROWTYPE;
               --开始游标创建需要列和值
                         BEGIN
               OPEN c_t;
               LOOP
               FETCH c_t INTO c_r;
               EXIT WHEN c_t%NOTFOUND;
                       IF  sql_columns<>' ' THEN
                                    BEGIN
                                          --sql_columns := sql_columns||','||c_r.column_name;
                                  IF c_r.data_type = 'DATE' THEN
                           IF  tableType =1 THEN  -- update
                               IF sqlOrNet = 1 THEN   --1 sql  0 net
                                    sql_columns :=sql_columns||','||c_r.column_name||'='||''''||to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss')||'''';
                               ELSE
                                    sql_columns :=sql_columns||','||c_r.column_name||'=:'||c_r.column_name;
                               END IF;
                           ELSE
                                                    sql_columns := sql_columns||','||c_r.column_name;
                            sql_columnvalues:=sql_columnvalues||','||''''||to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss');
                                   END IF ;
                                            ELSIF c_r.data_type = 'NUMBER' THEN
                                               IF  tableType =1 THEN  -- update
                                                       IF sqlOrNet = 1 THEN   --1 sql  0 net
                                                          sql_columns :=sql_columns||','||c_r.column_name||'='||0;
                                                         ELSE
                                                                sql_columns :=sql_columns||','||c_r.column_name||'=:'||c_r.column_name;
                                                       END IF;
                                              ELSE
                                                 sql_columns := sql_columns||','||c_r.column_name;
                                               sql_columnvalues:=sql_columnvalues||','||0;
                                                 END IF ;
                                            ELSE
                                                 IF  tableType =1 THEN  -- update
                                                       IF sqlOrNet = 1 THEN   --1 sql  0 net
                                                      sql_columns :=sql_columns||','||c_r.column_name||'='||'''''';
                                                         ELSE
                                                                sql_columns :=sql_columns||','||c_r.column_name||'=:'||c_r.column_name;
                                                       END IF;
                                               ELSE
                                                        sql_columns := sql_columns||','||c_r.column_name;
                                                      sql_columnvalues:=sql_columnvalues||','||'''''';
                                                END IF ;
                                            END IF ;
                                    END ;
                                ELSE
                                         BEGIN
                                            IF c_r.data_type = 'DATE' THEN
                                                IF  tableType =1 THEN  -- update
                                                       IF sqlOrNet = 1 THEN   --1 sql  0 net
                                                          sql_columns :=c_r.column_name||'='||''''||to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss')||'''';
                                                         ELSE
                                                                sql_columns :=c_r.column_name||'=:'||c_r.column_name;
                                                       END IF;
                                               ELSE
                                                 sql_columns := sql_columns||c_r.column_name;
                                               sql_columnvalues:=sql_columnvalues||''''||to_char(SYSDATE,'yyyy-MM-dd HH:mm:ss')||'''';
                                                 END IF;
                                            ELSIF c_r.data_type = 'NUMBER' THEN
                                                  IF  tableType =1 THEN  -- update
                                                             IF sqlOrNet = 1 THEN   --1 sql  0 net
                                                                        sql_columns :=c_r.column_name||'='||0;
                                                             ELSE
                                                                     sql_columns :=c_r.column_name||'=:'||c_r.column_name;
                                                             END IF;
                                                     ELSE
                                                     sql_columns := sql_columns||c_r.column_name;
                                                     sql_columnvalues:=sql_columnvalues||0;
                                                     END IF;
                                            ELSE
                                                  IF  tableType =1 THEN  -- update
                                                             IF sqlOrNet = 1 THEN   --1 sql  0 net
                                                                        sql_columns :=c_r.column_name||'='||'''''';
                                                             ELSE
                                                                        sql_columns :=c_r.column_name||'=:'||c_r.column_name;
                                                             END IF;
                                                     ELSE
                                                         sql_columns := sql_columns||c_r.column_name;
                                                         sql_columnvalues:=sql_columnvalues||'''''';
                                                     END IF;
                                            
                                            END IF ;
                                         END;
                              END IF ;
                                
               END LOOP;
               --关闭游标
               CLOSE  c_t;
                         END;
          END;
                --0 =insert 1 =update 2=delete 3=select  
                --生成对于的sql
                IF tableType=0 THEN
          tableOutStr:='insert into '||tableName||' ('||sql_columns||') values('||sql_columnvalues||')';
                ELSIF tableType=1 THEN
                tableOutStr:='update  '||tableName||' set  '||sql_columns;
                ELSE
                tableOutStr:='select   '||sql_columns||' from   '||tableName;
                END IF ;
      END;

  • 相关阅读:
    1123 Is It a Complete AVL Tree (30分)---如何建立平衡二叉搜索树(LL型RR型LR型RL型)+如何判断完全二叉树
    1021 Deepest Root (25 分)(经典搜索)
    PAT甲 1020 Tree Traversals (树的后序中序->层序)
    (数据结构)如何根据树的后序中序遍历求树的前序遍历
    习题2.3 数列求和-加强版 (模拟)
    PAT甲级 1051 Pop Sequence (25) && 2019天梯赛 L2-032 彩虹瓶 (25 分) (模拟+栈)
    PAT甲级 Are They Equal (25) (恶心模拟)
    PAT甲级1059 Prime Factors (25)(素数筛+求一个数的质因子)
    IO 模型
    Nginx 反向代理
  • 原文地址:https://www.cnblogs.com/linsu/p/3488552.html
Copyright © 2011-2022 走看看