V_AllTable 表信息 数据库 SQL2008

本文详细介绍了如何使用SQL查询获取表的元数据,包括字段名、数据类型、是否为主键、是否为唯一标识符、长度、是否允许为空、默认值、注释信息等,并按字段顺序排列。

SELECT     TOP (100) PERCENT d.name AS TableName, a.colorder AS Orders, a.name AS FieldName,
            (CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity')  = 1 THEN '√' ELSE '' END) AS Identitys,
            (CASE WHEN    (SELECT     COUNT(*)  FROM    sysobjects WHERE  (name IN
            (SELECT     name    FROM          sysindexes   WHERE      (id = a.id) AND (indid IN
            (SELECT     indid  FROM          sysindexkeys  WHERE      (id = a.id) AND (colid IN
            (SELECT     colid  FROM          syscolumns  WHERE      (id = a.id) AND (name = a.name))))))) AND (xtype = 'PK')) > 0 THEN '√' ELSE '' END) AS MainKey,
            b.name AS Types, a.length AS Bytes, COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS Lengths,
            ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'),  0) AS DecimalLength,
            (CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END) AS IS_NUll, ISNULL(e.text, '') AS Defaults, ISNULL(g.value, '') AS Field_Info,
            CASE d .xtype WHEN 'U' THEN 'Table' ELSE 'View' END AS Table_View, d.crdate AS CreateDate
            FROM         sys.syscolumns AS a LEFT OUTER JOIN       sys.systypes AS b ON a.xtype = b.xusertype INNER JOIN
            sys.sysobjects AS d ON a.id = d.id AND (d.xtype = 'U' OR  d.xtype = 'V') AND d.name <> 'dtproperties' LEFT OUTER JOIN
            sys.syscomments AS e ON a.cdefault = e.id LEFT OUTER JOIN sys.extended_properties AS g ON a.id = g.major_id AND a.colid = g.major_id
            ORDER BY a.id, orders


 

openguass数据库public static final String IDATA_QUERY_ALL_AREA_URL = "App.Intergration.area.all"; public static final String IDATA_QUERY_ALL_DEPARTMENT_URL = "App.Intergration.organization.all"; /* * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. */ -- Description: 清空 -- Author: cwx1445721 -- Version: 20250930 do LANGUAGE plpgsql $$ DECLARE V_SP_NAME nvarchar2(100) := '002_truncateTables_dml.sql'; V_LOG_PARAMS FND_LOG_PARAMS_TYP; V_ERROR_MSG nvarchar2(3000); V_IS_OK BOOL; V_CNT NUMERIC; V_ROW_COUNT NUMERIC; V_SQL TEXT :=''; V_CUR RECORD; v_table int4; BEGIN V_IS_OK := TRUE; BEGIN V_LOG_PARAMS := FND_INIT_LOG_PARAM_F(V_SP_NAME,'1','1',1); V_LOG_PARAMS.STEP_START_TIME := CLOCK_TIMESTAMP(); V_LOG_PARAMS.PROCESS_STEP_ID := V_LOG_PARAMS.PROCESS_STEP_ID + 1; V_LOG_PARAMS.LOG_MESSAGE := V_SP_NAME||' begin'; PERFORM FND_START_LOG_P(V_LOG_PARAMS); set app.current_tenant = 113704385416306; table_names VARCHAR[] := ARRAY[ 'fii.faai_apn_t' ]; -- 替换为目标名列 full_table_name VARCHAR; schema_part VARCHAR; table_part VARCHAR; table_exists BOOLEAN; BEGIN FOREACH full_table_name IN ARRAY table_names LOOP -- 分离模式名和名 schema_part := split_part(full_table_name, '.', 1); table_part := split_part(full_table_name, '.', 2); -- 检查是否存在 SELECT EXISTS ( SELECT 1 FROM pg_tables WHERE schemaname = schema_part AND tablename = table_part ) INTO table_exists; -- 获取存在标志[^1] -- 根据存在标志处理 IF table_exists THEN EXECUTE FORMAT('TRUNCATE TABLE %I.%I', schema_part, table_part); -- 安全执行清空 -- RAISE NOTICE 'table %.% 已清空', schema_part, table_part; END IF; END LOOP; EXCEPTION WHEN OTHERS THEN V_IS_OK := FALSE; V_ERROR_MSG := SUBSTR(SQLERRM, 1, 300); V_LOG_PARAMS.PROCESS_STEP_ID := V_LOG_PARAMS.PROCESS_STEP_ID + 1; V_LOG_PARAMS.LOG_MESSAGE := V_ERROR_MSG; PERFORM FND_EXCEPT_LOG_P(V_LOG_PARAMS); RETURN; END; IF V_IS_OK THEN COMMIT; END IF; V_IS_OK := TRUE; IF V_IS_OK THEN GET DIAGNOSTICS V_ROW_COUNT := ROW_COUNT; V_LOG_PARAMS.STEP_TYPE := 'END'; --V_LOG_PARAMS.DML_TYPE := 'ALL'; V_LOG_PARAMS.PROCESS_STEP_ID := V_LOG_PARAMS.PROCESS_STEP_ID + 1; V_LOG_PARAMS.DML_ROW_COUNT := V_ROW_COUNT; V_LOG_PARAMS.DATA_COMPONENT_NAME := V_SP_NAME; V_LOG_PARAMS.LOG_MESSAGE := V_SP_NAME||' end'; PERFORM FND_STEP_LOG_P(V_LOG_PARAMS, 2); COMMIT; END IF; end; $$此sql想要实现若数据库存在数组中的名则将对应的清空,修正sql,使这个sql能够实现功能
最新发布
09-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值