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;

  • 相关阅读:
    ORB-SLAM(五)优化
    ORB-SLAM(四)追踪
    ORB-SLAM(三)地图初始化
    SVM(支持向量机)的一点理解
    ORB-SLAM(二)性能
    ORB-SLAM(一)简介
    支持高并发的IIS Web服务器常用设置
    微信JS SDK Demo
    C#开发微信门户及应用-使用地理位置扩展相关应用
    DropdownListFor无法正确绑定值-同名问题
  • 原文地址:https://www.cnblogs.com/linsu/p/3488552.html
Copyright © 2011-2022 走看看