爆款云主机低至25.83元/年
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 云聚517 · 好价翼起拼 NEW 爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
Token服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V4-Flash
  • GLM-5.1
  • Qwen3.5-122B-A10B
  • DeepSeek-V3.2(旗舰版)
  • GLM-5(正式版)
智算一体机
  • 智算一体机
智能体引擎
  • 智能体引擎
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      EasyCoding敏捷开发平台_相关内容
      • 修改表(ALTER TABLE)
        语法示例 示例1:添加新列 plaintext 在users表末尾添加age列 ALTER TABLE users ADD COLUMN age INT NOT NULL DEFAULT 0; 在name列后添加email列 ALTER TABLE users ADD COLUMN email VARCHAR(100) AFTER name; 一次性添加多个列 ALTER TABLE users ADD COLUMN (phone VARCHAR(20), address TEXT); 示例2:修改列定义 plaintext 修改username列定义(不重命名) ALTER TABLE users MODIFY COLUMN username VARCHAR(50) NOT NULL UNIQUE; 重命名并修改列 ALTER TABLE users CHANGE COLUMN oldname newname VARCHAR(100) NOT NULL FIRST; 示例3:添加或删除索引 plaintext 添加普通索引 ALTER TABLE users ADD INDEX idxemail (email); 添加唯一索引 ALTER TABLE users ADD UNIQUE KEY ukusername (username); 添加复合索引 ALTER TABLE users ADD INDEX idxnamestatus (lastname, status DESC); 删除索引 ALTER TABLE users DROP INDEX idxemail; 示例4:添加或删除主键 plaintext 添加主键 ALTER TABLE users ADD PRIMARY KEY (id); 删除主键 ALTER TABLE users DROP PRIMARY KEY; 示例5:删除列 plaintext 删除单个列 ALTER TABLE users DROP COLUMN temporaryfield; 删除多个列 ALTER TABLE users DROP COLUMN oldfield1, DROP COLUMN oldfield2; 示例6:修改表属性 plaintext 修改表注释和存储引擎 ALTER TABLE users COMMENT '用户信息表', ENGINE InnoDB; 设置自增起始值 ALTER TABLE users AUTOINCREMENT 1000;
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理数据表的DDL语句
        修改表(ALTER TABLE)
      • 类型转换函数
        函数表达式 函数描述 BINARY Cast a string to a binary string CONVERT() Cast a value as a certain type CAST() Cast a value as a certain type
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        类型转换函数
      • DDL管理查询类语句
        DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍dbproxy查询表、DDL任务信息的语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 udal show table UDAL SHOW TABLE语句用于查询表的详细信息。以下是对该语句的详细说明: plaintext UDAL SHOW TABLE [ WHERE [deletestatus 0] [AND zkschemacode ?] [AND zktablecode ?] [AND tabletype IN (?, ...)] [AND tabletype NOT IN (?, ...)] [AND schemaname ?] [[AND (tablename LIKE ? OR tablename LIKE ? OR ...)] [AND tablename ? ] [AND tablename IN (?, ...)]] ORDER BY tableid ] 参数说明: deletestatus:删除标志,取值范围为: 0:表示未删除。 1:表示已删除。 zkschemacode:逻辑库的ZK节点的序列值。 zktablecode:表的ZK节点的序列值。 tabletype:表的分片类型,取值范围为: 1:全局表。 2:分片表(包含5和7)。 3:单片表(包含6) 。 4:未设置分片规则。 5:分片表+库内分表。 6:单片表+库内分表。 7:分片表+库内分桶。 schemaname:逻辑库名。 tablename:表名,支持精确匹配和模糊匹配。 udal show ddljob UDAL SHOW DDLJOB语句用于查询DDL任务的详细信息。 语法: plaintext UDAL SHOW DDLJOB [ WHERE [JOBID?] [TASKID?] [schemaid? [AND result?][AND script like '%?%'][AND createtime>?][AND createtime
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        DDL管理查询类语句
      • 管理用户和角色的DDL语句
        DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍dbproxy创建、修改、删除用户,以及创建、修改、删除角色的DDL语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 用户、角色、权限相关的语句都对应前端页面的选项, 语句中的值XXXX顺序可以随意调换,不强制顺序与例句一致。 创建用户 支持的语法: plaintext [UDAL] CREATE USER [IF NOT EXISTS] 'username' IDENTIFIED BY '' SET manageCommand 'true' 'false' AND profile 'profilename' AND whitelist 'true' 'false' AND freeFrontConnection 'true' 'false' AND groups '{ "setAll": "true" "false", "groupList": "..." }' AND canhint 'true' 'false' AND role 'rolename [, rolename2, ...]'; 其中,用户名和密码必填,其余参数为非必填。 语法说明: username:需要创建的用户名称。 IDENTIFIED BY:指定用户密码。 manageCommand:是否有管理命令权限(true/false)。 profile:密码策略,设定用户的安全策略或权限等级(如 复杂度高长期有效)。可以填写中文或者英文,所填的值大小写敏感: 中文 英文 复杂度低临时有效 Low complexity temporary effective 复杂度中短期有效 Medium complexity short term effective 复杂度高长期有效 High complexity long term effective 复杂度高永久有效 High complexity permanent whitelist:是否有过载保护白名单权限(true/false)。 freeFrontConnection:是否前端连接不受限(true/false)。 canhint:是否具有Hint权限(true/false)。 role:赋予用户的角色,可以是多个角色,如果是同时赋予多个角色,需要用逗号分开并用单引号或双引号包括起来。 groups:指定用户所拥有权限的分组信息以及对应分组的连接数限制信息,JSON格式,包含setAll和groupList。 setAll表示是否拥有所有分组权限,groupList表示拥有哪些分组权限以及对应的分组的连接数限制。当设置groups参数时必须包含这两个值,否则报错。 其中,groups指定用户所拥有的分组权限时,根据是否前端连接不受限有以下组合: 不设置分组权限,则不需要设置groups参数。 当前端连接不受限,即freeFrontConnectiontrue时,并拥有所有的分组权限,则设置groups'{ "setAll": "true", "groupList": "" }'。 当前端连接不受限,即freeFrontConnectiontrue时,并拥有部分分组权限,则设置groups'{ "setAll": "false", "groupList": "group1,group2" }'。 当前端连接受限,即freeFrontConnectionfalse时,需要设置分组权限时,如果对某分组不设置连接数限制则直接填写分组名称,如果对某分组设置连接数限制则填写 分组名:连接数。 例如,groups '{ "setAll": "false", "groupList":"r1,r2:100,r3" }' 意为拥有部分分组的权限,具体为r1,r2,r3这三个分组的权限,其中r1,r3的前端连接数不受限制, r2的前端连接数限制为100。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理用户和角色的DDL语句
      • 优化表(OPTIMIZE TABLE)
        DRDS支持直接连接DBProxy执行DDL语句,其中,OPTIMIZE TABLE用于优化表性能和空间利用,提升查询性能、更新统计信息等,本文为您介绍OPTIMIZE TABLE语句。 注意 仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。 OPTIMIZE TABLE语句会根据分片规则的设置在标准库和对应的分片库上执行。 支持的语法如下: plaintext OPTIMIZE TABLE mytable; 注意 只支持单个表。
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        DDL语法
        管理数据表的DDL语句
        优化表(OPTIMIZE TABLE)
      • 字符串函数
        本文介绍DRDS支持的字符串函数。 函数表达式 函数描述 ASCII() Return numeric value of leftmost character BIN() Return a string containing binary representation of a number BITLENGTH() Return length of argument in bits CHARLENGTH() Return number of characters in argument CHAR() Return the character for each integer passed CHARACTERLENGTH() Synonym for CHARLENGTH() CONCATWS() Return concatenate with separator CONCAT() Return concatenated string ELT() Return string at index number EXPORTSET() Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string FIELD() Return the index (position) of the first argument in the subsequent arguments FINDINSET() Return the index position of the first argument within the second argument FORMAT() Return a number formatted to specified number of decimal places HEX() Return a hexadecimal representation of a decimal or string value INSERT() Insert a substring at the specified position up to the specified number of characters INSTR() Return the index of the first occurrence of substring LCASE() Synonym for LOWER() LEFT() Return the leftmost number of characters as specifified QUOTE() Escape the argument for use in an SQL statement NOT REGEXP Negation of REGEXP NOT LIKE Negation of simple pattern matching LTRIM() Remove leading spaces REPEAT() Repeat a string the specifified number of times REPLACE() Replace occurrences of a specifified string MAKESET() Return a set of commaseparated strings that have the corresponding bit in bits set OCT() Return a string containing octal representation of a number MID() Return a substring starting from the specifified position ORD() Return character code for leftmost character of the argument LOWER() Return the argument in lowercase LENGTH() Return the length of a string in bytes LOCATE() Return the position of the fifirst occurrence of substring LPAD() Return the string argument, leftpadded with the specifified string REVERSE() Reverse the characters in a string LIKE Simple pattern matching OCTETLENGTH() Synonym for LENGTH() POSITION() Synonym for LOCATE() RIGHT() Return the specifified rightmost number of characters RPAD() Append string the specifified number of times STRCMP() Compare two strings UPPER() Convert to uppercase TRIM() Remove leading and trailing spaces RTRIM() Remove trailing spaces UNHEX() Return a string containing hex representation of a number SPACE() Return a string of the specifified number of spaces SUBSTRINGINDEX() Return a substring from a string before the specifified number of occurrences of the delimiter SUBSTR() Return the substring as specifified SUBSTRING() Return the substring as specifified UCASE() Synonym for UPPER()
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        字符串函数
      • 数字函数
        本文介绍DRDS支持的数字函数。 函数表达式 函数描述 CRC32() Compute a cyclic redundancy check value DEGREES() Convert radians to degrees DIV Intger division EXP() Raise to the power of FLOOR() Return the largest integer value not greater than the argument LN() Return the natural logarithm of the argument LOG10() Return the base10 logarithm of the argument LOG2() Return the base2 logarithm of the argument LOG() Return the natural logarithm of the first argument MOD() Return the natural logarithm of the first argument %, MOD Modulo operator PI() Modulo operator POW() Return the argument raised to the specified power POWER() Return the argument raised to the specified power RADIANS() Return argument converted to radians RAND() Return a random floatingpoint value ROUND() Round the argument SIGN() Return the sign of the argument SIN() Return the sine of the argument SQRT() Return the square root of the argument TAN() Return the tangent of the argument TRUNCATE( Truncate to specified number of decimal places ABS() Return the absolute value ACOS() Return the arc cosine ASIN() Return the arc sine ATAN() Return the arc tangent ATAN2(),ATAN() Return the arc tangent of the two arguments CEIL() Return the smallest integer value not less than the argument CEILING() Return the smallest integer value not less than the argument CONV() Convert numbers between difffferent number bases COS() Return the cosine COT() Return the cotangent
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        数字函数
      • 流程函数
        本文介绍DRDS支持的流程函数。 函数表达式 函数描述 CASE Case operator IF() If/else construct IFNULL() Null if/else construct NULLIF() Return NULL if expr1 expr2
        来自:
        帮助文档
        分布式关系型数据库
        开发指南
        函数
        流程函数
      • Python
        环境安装 1. 安装Python。(Python版本为2.7或3.X。) 2. 安装依赖库。(使用公网连接需要安装confluentkafka 1.9.2及以下版本的依赖库) pip install confluentkafka1.9.2 3. 下载Demo包kafkaconfluentpythondemo.zip。 配置修改 1. 如果是ssl连接,需要在控制台下载证书。并且解压压缩包得到ssl.client.truststore.jks,执行以下命令生成caRoot.pem文件。 keytool importkeystore srckeystore ssl.client.truststore.jks destkeystore caRoot.p12 deststoretype pkcs12 openssl pkcs12 in caRoot.p12 out caRoot.pem 2. 修改setting.py文件。(calocation仅在ssl连接时需要配置) kafkasetting { 'bootstrapservers': 'XXX', 'topicname': 'XXX', 'groupname': 'XXX' } 生产消息 发送以下命令发送消息。 python kafkaproducer.py 生产消息示例代码如下: from confluentkafka import Producer import setting conf setting.kafkasetting """初始化一个 Producer 对象""" p Producer({'bootstrap.servers': conf['bootstrapservers']}) def deliveryreport(err, msg): """ Called once for each message produced to indicate delivery result. Triggered by poll() or flush(). """ if err is not None: print('Message delivery failed: {}'.format(err)) else: print('Message delivered to {} [{}]'.format(msg.topic(), msg.partition())) """异步发送消息""" p.produce(conf['topicname'], "Hello".encode('utf8'), callbackdeliveryreport) p.poll(0) """在程序结束时,调用flush""" p.flush() 消费消息 发送以下命令消费消息。 python kafkaconsumer.py 消费消息示例代码如下: from confluentkafka import Consumer, KafkaError import setting conf setting.kafkasetting c Consumer({ 'bootstrap.servers': conf['bootstrapservers'], 'group.id': conf['groupname'], 'auto.offset.reset': 'latest' }) c.subscribe([conf['topicname']]) while True: msg c.poll(1.0) if msg is None: continue if msg.error(): if msg.error().code() KafkaError.PARTITIONEOF: continue else: print("Consumer error: {}".format(msg.error())) continue print('Received message: {}'.format(msg.value().decode('utf8'))) c.close()
        来自:
        帮助文档
        分布式消息服务Kafka
        开发指南
        Python
      • Java
        SSL消费消息 import com.rabbitmq.client.; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.; import java.security.cert.CertificateException; import java.util.concurrent.TimeoutException; public class RabbitmqConsumerSsl { //队列名称 private final static String QUEUENAME "helloMQ"; public static void main(String[] args) throws IOException, TimeoutException { //创建连接工厂 ConnectionFactory factory new ConnectionFactory(); //设置主机ip factory.setHost("127.0.0.1"); // 设置amqp的ssl端口号 factory.setPort(5671); String ksFile "/sslpath/ssl/clientrabbitmqkey.p12"; String tksFile "/sslpath/ssl/truststore"; SSLContext c null; try { char[] keyPassphrase "YOUR PASSPHRASE".toCharArray(); KeyStore ks KeyStore.getInstance("PKCS12"); ks.load(new FileInputStream(ksFile), keyPassphrase); KeyManagerFactory kmf KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, keyPassphrase); char[] trustPassphrase "YOUR PASSPHRASE".toCharArray(); KeyStore tks KeyStore.getInstance("JKS"); tks.load(new FileInputStream(tksFile), trustPassphrase); TrustManagerFactory tmf TrustManagerFactory.getInstance("SunX509"); tmf.init(tks); c SSLContext.getInstance("tlsv1.2"); c.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); } catch (KeyStoreException e) { throw new RuntimeException(e); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } catch (CertificateException e) { throw new RuntimeException(e); } catch (UnrecoverableKeyException e) { throw new RuntimeException(e); } catch (KeyManagementException e) { throw new RuntimeException(e); } factory.setSaslConfig(DefaultSaslConfig.EXTERNAL); factory.useSslProtocol(c); //设置Vhost,需要在控制台先创建 factory.setVirtualHost("vhost"); //基于网络环境合理设置超时时间 factory.setConnectionTimeout(30 1000); factory.setHandshakeTimeout(30 1000); factory.setShutdownTimeout(0); Connection connection factory.newConnection(); Channel channel connection.createChannel(); //声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。 channel.queueDeclare(QUEUENAME, false, false, false, null); System.out.println(" [] Waiting for messages. To exit press CTRL+C"); Consumer consumer new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message new String(body, StandardCharsets.UTF8); System.out.println("Received message: '" + message + "'"); } }; channel.basicConsume(QUEUENAME, true, consumer); } }
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        开发指南
        Java
      • 概述
        编程语言 SDK Java rabbitmqjavaclient Spring Framework SpringAMQP .Net rabbitmqdotnetclient Python pika PHP phpamqplib C rabbitmqc Go amqp091go
        来自:
        帮助文档
        分布式消息服务RabbitMQ
        开发指南
        概述
      • Go
        消费消息 发送以下命令消费消息。 go run modvendor consumer/consumer.go 消费消息示例代码如下: package main import ( "encoding/json" "fmt" "github.com/confluentinc/confluentkafkago/kafka" "os" "path/filepath" ) type KafkaConfig struct { Topic string json:"topic" Topic2 string json:"topic2" GroupId string json:"group.id" BootstrapServers string json:"bootstrap.servers" SecurityProtocol string json:"security.protocol" } // config should be a pointer to structure, if not, panic func loadJsonConfig() KafkaConfig { workPath, err : os.Getwd() if err ! nil { panic(err) } configPath : filepath.Join(workPath, "conf") fullPath : filepath.Join(configPath, "kafka.json") file, err : os.Open(fullPath); if (err ! nil) { msg : fmt.Sprintf("Can not load config at %s. Error: %v", fullPath, err) panic(msg) } defer file.Close() decoder : json.NewDecoder(file) var config &KafkaConfig{} err decoder.Decode(config); if (err ! nil) { msg : fmt.Sprintf("Decode json fail for config file at %s. Error: %v", fullPath, err) panic(msg) } json.Marshal(config) return config } func doInitConsumer(cfg KafkaConfig) kafka.Consumer { fmt.Print("init kafka consumer, it may take a few seconds to init the connectionn") //common arguments var kafkaconf &kafka.ConfigMap{ "api.version.request": "true", "auto.offset.reset": "latest", "heartbeat.interval.ms": 3000, "session.timeout.ms": 30000, "max.poll.interval.ms": 120000, "fetch.max.bytes": 1024000, "max.partition.fetch.bytes": 256000} kafkaconf.SetKey("bootstrap.servers", cfg.BootstrapServers); kafkaconf.SetKey("group.id", cfg.GroupId) switch cfg.SecurityProtocol { case "PLAINTEXT" : kafkaconf.SetKey("security.protocol", "plaintext"); case "SSL": kafkaconf.SetKey("security.protocol", "ssl"); kafkaconf.SetKey("ssl.ca.location", "/XXX/caRoot.pem") case "SASLSSL": kafkaconf.SetKey("security.protocol", "saslssl"); kafkaconf.SetKey("ssl.ca.location", "/XXX/caRoot.pem"); kafkaconf.SetKey("sasl.username", cfg.SaslUsername); kafkaconf.SetKey("sasl.password", cfg.SaslPassword); kafkaconf.SetKey("sasl.mechanism", cfg.SaslMechanism) case "SASLPLAINTEXT": kafkaconf.SetKey("security.protocol", "saslplaintext"); kafkaconf.SetKey("sasl.username", cfg.SaslUsername); kafkaconf.SetKey("sasl.password", cfg.SaslPassword); kafkaconf.SetKey("sasl.mechanism", cfg.SaslMechanism) default: panic(kafka.NewError(kafka.ErrUnknownProtocol, "unknown protocol", true)) } consumer, err : kafka.NewConsumer(kafkaconf) if err ! nil { panic(err) } fmt.Print("init kafka consumer successn") return consumer; } func main() { // Choose the correct protocol cfg : loadJsonConfig(); consumer : doInitConsumer(cfg) consumer.SubscribeTopics([]string{cfg.Topic, cfg.Topic2}, nil) for { msg, err : consumer.ReadMessage(1) if err nil { fmt.Printf("Message on %s: %sn", msg.TopicPartition, string(msg.Value)) } else { // The client will //automatically try to recover from all errors. fmt.Printf("Consumer error: %v (%v)n", err, msg) } } consumer.Close() }
        来自:
        帮助文档
        分布式消息服务Kafka
        开发指南
        Go
      • 高级SQL语句编写
        select from (select rownumber() over(partition by begincity order by amount desc), from bills) where rownumber<3; rownumber id goodsdesc beginunit begincity pubtime amount ++++++ 1 8 旋挖附件35吨 河南省 三门峡市 20151005 10:48:38 9885.95 2 7 旋挖附件38吨 河南省 三门峡市 20151005 10:48:38 9376.8 1 2 建筑设备 福建省 三明市 20151005 07:21:22 8195.98 2 4 普货 福建省 三明市 20151005 15:19:17 7626.41 1 1 衣服 海南省 三亚市 20151005 09:32:01 3714.15 1 10 设备 上海市 上海市 20151005 07:59:35 1784.63 2 11 普货40吨需13米半挂一辆 上海市 上海市 20151005 08:13:59 1425.64 (7 rows)
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        进阶开发
        高级SQL语句编写
      • 其他控制语句
        本页介绍天翼云TeleDB数据库PL/pgsql控制结构中的其他控制语句。 动态执行 plaintext teledb CREATE OR REPLACE FUNCTION f27(aid INTEGER) RETURNS text AS teledb $$ teledb$ DECLARE teledb$ vsql TEXT; teledb$ vmc TEXT; teledb$ BEGIN teledb$ vsql : 'SELECT mc FROM t WHERE id'aid::TEXT; teledb$ EXECUTE vsql INTO vmc; teledb$ RETURN vmc; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(1); f27 teledbpg (1 row) 动态执行就是拼SQL语句,然后使用EXECUTE命令执行。 执行一个没有结果的命令 plaintext teledb CREATE OR REPLACE FUNCTION f27() RETURNS void AS teledb $$ teledb$ BEGIN teledb$ perform f27(1); teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(); f27 (1 row) teledb 获取执行结果 plaintext teledb DROP FUNCTION f27(INTEGER); DROP FUNCTION teledb CREATE OR REPLACE FUNCTION f27(aid INTEGER) RETURNS VOID AS teledb $$ teledb$ DECLARE teledb$ vmc TEXT; teledb$ BEGIN teledb$ SELECT mc INTO vmc FROM t WHERE idaid; teledb$ IF FOUND THEN teledb$ RAISE NOTICE '查询到记录,值为%',vmc; teledb$ ELSE teledb$ RAISE NOTICE '查不到记录' ; teledb$ END IF; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        PL:pgsql开发
        控制结构
        其他控制语句
      • 修改存储过程所属 schema
        本页介绍天翼云TeleDB数据库修改存储过程所属schema的语法。 修改不带参数的存储过程schema plaintext teledb CREATE OR REPLACE PROCEDURE public.proc1() AS $$ begin raise notice 'Hello teledbpg'; end; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb teledb alter procedure public.proc1() set schema myche; ALTER PROCEDURE teledb 修改带参数的存储过程schema plaintext teledb CREATE OR REPLACE PROCEDURE public.proc1(aint int) AS $$ begin raise notice '%',aint; end; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb alter procedure public.proc1 (int) set schema myche; ALTER PROCEDURE teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        存储过程开发
        存储过程语法介绍
        修改存储过程所属 schema
      • OR REPLACE更新存储介绍
        本页介绍天翼云TeleDB数据库使用OR REPLACE更新存储的语法。 带OR REPLACE的作用,在建立存储过程时若存在则替换,建立存储时不带 OR REPLACE关键字,则遇到函数已经存系统则会报错,如下所示。 plaintext teledb select prosrc from pgproc where proname'proc1'; prosrc begin + raise notice 'Hello teledbpg';+ end; + (1 row) teledb CREATE OR REPLACE PROCEDURE proc1() AS $$ begin raise notice 'Hello,teledbpg'; end; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb select prosrc from pgproc where proname'proc1'; prosrc begin + raise notice 'Hello,teledbpg';+ end; + (1 row) teledb teledb call proc1(); NOTICE: Hello,teledbpg CALL teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        存储过程开发
        存储过程语法介绍
        OR REPLACE更新存储介绍
      • Go SDK
        您可使用开源CloudEvents Go SDK发布事件。 前提条件 1. 您已下载Goland等Go研发IDE。 2. 在go.mod中加入依赖。 plaintext require ( github.com/cloudevents/sdkgo/v2 v2.15.1 github.com/google/uuid v1.1.1 ) // 然后执行更新依赖 go mod tidy go mod vendor 注:sdkgo可参考使用版本2.15.1。 签名生成工具 示例代码如下: plaintext package main import ( "bytes" "crypto/hmac" "crypto/sha1" "encoding/base64" "hash" "io" "sort" "strings" ) // Request is used wrap http request type Request struct { Protocol string Port int Method string Pathname string Domain string Headers map[string]string Query map[string]string } // NewRequest is used shortly create Request func NewRequest() (req Request) { return &Request{ Headers: map[string]string{}, Query: map[string]string{}, } } func String(a string) string { return &a } func StringValue(a string) string { if a nil { return "" } return a } type Sorter struct { Keys []string Vals []string } func newSorter(m map[string]string) Sorter { hs : &Sorter{ Keys: make([]string, 0, len(m)), Vals: make([]string, 0, len(m)), } for k, v : range m { hs.Keys append(hs.Keys, k) hs.Vals append(hs.Vals, v) } return hs } // Sort is an additional function for function SignHeader. func (hs Sorter) Sort() { sort.Sort(hs) } // Len is an additional function for function SignHeader. func (hs Sorter) Len() int { return len(hs.Vals) } // Less is an additional function for function SignHeader. func (hs Sorter) Less(i, j int) bool { return bytes.Compare([]byte(hs.Keys[i]), []byte(hs.Keys[j])) < 0 } // Swap is an additional function for function SignHeader. func (hs Sorter) Swap(i, j int) { hs.Vals[i], hs.Vals[j] hs.Vals[j], hs.Vals[i] hs.Keys[i], hs.Keys[j] hs.Keys[j], hs.Keys[i] } / Get the string to be signed according to request @param request which contains signed messages @return the signed string / func GetStringToSign(request Request) (result string) { return String(getStringToSign(request)) } func getStringToSign(request Request) string { resource : StringValue(request.Pathname) queryParams : request.Query // sort QueryParams by key var queryKeys []string for key : range queryParams { queryKeys append(queryKeys, key) } sort.Strings(queryKeys) tmp : "" for i : 0; i < len(queryKeys); i++ { queryKey : queryKeys[i] tmp tmp + "&" + queryKey + "" + StringValue(queryParams[queryKey]) } if tmp ! "" { tmp strings.TrimLeft(tmp, "&") resource resource + "?" + tmp } return getSignedStr(request, resource) } func getSignedStr(req Request, canonicalizedResource string) string { temp : make(map[string]string) for k, v : range req.Headers { if strings.HasPrefix(strings.ToLower(k), "xceb") { temp[strings.ToLower(k)] StringValue(v) } } hs : newSorter(temp) // Sort the temp by the ascending order hs.Sort() // Get the canonicalizedOSSHeaders canonicalizedHeaders : "" for i : range hs.Keys { canonicalizedHeaders + hs.Keys[i] + ":" + hs.Vals[i] + "n" } // Give other parameters values // when sign URL, date is expires date : StringValue(req.Headers["date"]) contentType : StringValue(req.Headers["contenttype"]) contentMd5 : StringValue(req.Headers["contentmd5"]) signStr : StringValue(req.Method) + "n" + contentMd5 + "n" + contentType + "n" + date + "n" + canonicalizedHeaders + canonicalizedResource return signStr } func GetSignature(stringToSign string, secret string) (result string) { h : hmac.New(func() hash.Hash { return sha1.New() }, []byte(StringValue(secret))) io.WriteString(h, StringValue(stringToSign)) signedStr : base64.StdEncoding.EncodeToString(h.Sum(nil)) return String(signedStr) }
        来自:
        帮助文档
        事件总线
        开发参考
        Cloudevents SDK参考
        Go SDK
      • C++ SDK
        开源CloudEvents 未提供C++SDK,但您可以通过发送一个http请求的形式来完成发送事件。 前提条件 1. 您的运行环境已安装libcurl、boost依赖库。支持c++11及以上,若不支持修改对应代码。 2. 下载eventBridgecppsdk.zip,查看示例代码。 签名生成工具 cpp include "EventSignHelper.h" include include include "crypt/hmac.h" include "crypt/sha1.h" include include using namespace std; string get(map m, const string &key) { string value; if (m.find(key) ! m.end()) { value m[key]; } return value; } string implode(const vector &vec, const string &glue) { string res; int n 0; for (const auto &str : vec) { if (n 0) { res str; } else { res + glue + str; } n++; } return res; } string uppercase(string str) { transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return toupper(c); }); return str; } bool startwith(string src, string prefix) { auto res mismatch(prefix.begin(), prefix.end(), src.begin()); return res.first prefix.end(); } void ltrim(string &s) { s.erase(s.begin(), findif(s.begin(), s.end(), [](unsigned char ch) { return !isspace(ch); })); } // trim from end (in place) void rtrim(string &s) { s.erase(findif(s.rbegin(), s.rend(), [](unsigned char ch) { return !isspace(ch); }) .base(), s.end()); } // trim from both ends (in place) void trim(string &s) { ltrim(s); rtrim(s); } string getCanonicalizedHeaders(const map &headers, const string &prefix "xceb") { stringstream result; for (const auto &item : headers) { if (startwith(item.first, prefix)) { string v item.second; trim(v); result query) { if (query.empty()) { return pathname; } vector tmp; tmp.reserve(query.size()); for (const auto &item : query) { tmp.pushback(string(item.first) + "" + item.second); } return pathname + "?" + implode(tmp, "&"); } string hmacsha1(const string &src, const string &key) { boost::uint8t hashval[sha1::HASHSIZE]; hmac ::calc(src, key, hashval); return base64::encodefromarray(hashval, sha1::HASHSIZE); } // 生成签名 string EventSignHelper::genSign(const string& httpMethod, const map & headers, const string& pathname, const map & query, const string& ak, const string& sk) { string contentmd5 get(headers, "contentmd5"); string contenttype get(headers, "contenttype"); string date get(headers, "date"); stringstream stringToSign; stringToSign << uppercase("POST") << "n" << contentmd5 << "n" << contenttype << "n" << date << "n"; stringToSign << getCanonicalizedHeaders(headers); stringToSign << getCanonicalizedResource(pathname, query); string sign hmacsha1(stringToSign.str(), sk); string token "ceb:" + ak + ":" + sign; return token; }
        来自:
        帮助文档
        事件总线
        开发参考
        Cloudevents SDK参考
        C++ SDK
      • 存储过程修改名称
        本页介绍天翼云TeleDB数据库修改存储过程名称的语法。 修改不带参数的存储过程名称 plaintext teledb CREATE OR REPLACE PROCEDURE proc1() AS $$ begin raise notice 'Hello telebdxpg'; end; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb alter procedure proc1() rename to proc11; ALTER PROCEDURE teledb 修改带参数的存储过程名称 plaintext teledb CREATE OR REPLACE PROCEDURE proc1(aint int) AS $$ begin raise notice '%',aint; end; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb alter procedure proc1 (aint int) rename to proc11; ALTER PROCEDURE
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        存储过程开发
        存储过程语法介绍
        存储过程修改名称
      • Oracle GUC参数配置
        本页介绍天翼云TeleDB数据库的Oracle GUC参数配置。 session中生效 plaintext SET enableoraclecompatible to ON; 配置某个库默认生效 plaintext alter database teledb set enableoraclecompatible to on; 配置某个用户默认生效 plaintext alter role admin set enableoraclecompatible to on;
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        Oracle 兼容语法
        Oracle GUC参数配置
      • 俘获错误
        本页介绍天翼云TeleDB数据库PL/pgsql控制结构中的俘获处理和获取错误相关信息。 错误俘获处理 plaintext teledb CREATE TABLE texception (id integer not null,nc text); CREATE TABLE teledb create unique index texceptioniduidx on texception using btree(id); CREATE INDEX teledb CREATE OR REPLACE FUNCTION f27(aid integer,anc text) RETURNS TEXT AS teledb $$ teledb$ BEGIN teledb$ INSERT INTO texception VALUES(aid,anc); teledb$ RETURN ''; teledb$ EXCEPTION WHEN OTHERS THEN teledb$ RETURN '执行出错'; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(1,'teledbpg'); f27 (1 row) teledb SELECT f27(1,'teledbpg'); f27 执行出错 (1 row) 获取错误相关信息 plaintext teledb CREATE OR REPLACE FUNCTION f27(aid integer,anc text) RETURNS TEXT AS teledb $$ teledb$ DECLARE teledb$ vsqlstate text; teledb$ vcontext text; teledb$ vmessagetext text; teledb$ BEGIN teledb$ INSERT INTO texception VALUES(aid,anc); teledb$ RETURN ''; teledb$ EXCEPTION WHEN OTHERS THEN teledb$ GET STACKED DIAGNOSTICS vsqlstate RETURNEDSQLSTATE, teledb$ vmessagetext MESSAGETEXT, teledb$ vcontext PGEXCEPTIONCONTEXT; teledb$ RAISE NOTICE '错误代码 : %',vsqlstate; teledb$ RAISE NOTICE '出错信息 : %',vmessagetext; teledb$ RAISE NOTICE '发生异常语句 : %',vcontext; teledb$ RETURN '错误代码 : 'vsqlstate 'n出错信息 : 'vmessagetext '发生异常语句 : 'vcontext; teledb$
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        PL:pgsql开发
        控制结构
        俘获错误
      • 多字段索引
        insert into tsimpleidx select t,t,t,t from generateseries(1,1000000) as t; INSERT 0 1000000 Time: 4186.401 ms (00:04.186) 多字段索引走非第一字段查询时性能比独立的单字段差。 多字段 plaintext teledb select from tmulidx where f11; f1 f2 f3 f4 +++ 1 1 1 1 (1 row) Time: 1.034 ms teledb select from tmulidx where f21; f1 f2 f3 f4 +++ 1 1 1 1 (1 row) Time: 37.072 ms teledb select from tmulidx where f31; f1 f2 f3 f4 +++ 1 1 1 1 (1 row) Time: 36.229 ms 单字段 plaintext teledb select from tsimpleidx where f11; f1 f2 f3 f4 +++ 1 1 1 1 (1 row) Time: 2.610 ms teledb select from tsimpleidx where f21; f1 f2 f3 f4 +++ 1 1 1 1 (1 row) Time: 3.266 ms teledb select from tsimpleidx where f31; f1 f2 f3 f4 +++ 1 1 1 1 (1 row) Time: 1.316 ms
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        数据库基础开发
        DDL操作
        索引管理
        多字段索引
      • 循环语句
        vrandom float8 : random() ; teledb$ BEGIN teledb$ WHILE vrandom > 0.8 LOOP teledb$ RAISE NOTICE '%',vid; teledb$ vid : vid + 1; teledb$ vrandom random(); teledb$ END LOOP; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(); NOTICE: 1 f27 (1 row) FOR循环 plaintext teledb CREATE OR REPLACE FUNCTION f27() RETURNS VOID AS teledb $$ teledb$ BEGIN teledb$ FOR i IN 1..3 LOOP teledb$ RAISE NOTICE 'i %',i; teledb$ END LOOP; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(); NOTICE: i 1 NOTICE: i 2 NOTICE: i 3 f27 (1 row) teledb CREATE OR REPLACE FUNCTION f27() RETURNS VOID AS teledb $$ teledb$ BEGIN teledb$ FOR i IN REVERSE 3..1 LOOP teledb$ RAISE NOTICE 'i %',i; teledb$ END LOOP; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(); NOTICE: i 3 NOTICE: i 2 NOTICE: i 1 f27 (1 row) 使用REVERSE递减。 plaintext teledb CREATE OR REPLACE FUNCTION f27() RETURNS VOID AS teledb $$ teledb$ BEGIN teledb$ FOR i IN 1..8 BY 2 LOOP teledb$ RAISE NOTICE 'i %',i; teledb$ END LOOP; teledb$
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        PL:pgsql开发
        控制结构
        循环语句
      • jsonb应用
        select from tjsonb; id fjsonb + 1 {"col": "pgxz", "col1": 1, "col2": "teledb"} 2 {"col1": 1, "col2": "teledb"} 3 {"col1": 1, "col2": "teledbupdate"} (3 rows) teledb update tjsonb set fjsonb jsonbset( fjsonb , '{col2}' , '"pgxz"' , false ) where id3; UPDATE 1 teledb select from tjsonb; id fjsonb + 1 {"col": "pgxz", "col1": 1, "col2": "teledb"} 2 {"col1": 1, "col2": "teledb"} 3 {"col1": 1, "col2": "pgxz"} (3 rows) jsonb函数应用 jsonbeach() 将 json 对象转变键和值 plaintext teledb select fjsonb from tjsonb where id1; fjsonb {"col": "pgxz", "col1": 1, "col2": "teledb"} (1 row) teledb select from jsonbeach((select fjsonb from tjsonb where id1)); key value + col "pgxz" col1 1 col2 "teledb" (3 rows) jsonbeachtext() 将 json 对象转变文本类型的键和值 plaintext teledb select from jsonbeachtext((select fjsonb from tjsonb where id1)); key value + col pgxz col1 1 col2 teledb (3 rows) rowtojson() 将一行记录变成一个json对象 plaintext teledb create table t1(id int, name varchar); CREATE TABLE teledb insert into t1 values(1,'teledb'),(2,'pgxc'); COPY 2 teledb select from t1; id name + 1 teledb 2 pgxc (2 rows) teledb select rowtojson(t1) from t1; rowtojson {"id":1,"name":"teledb"} {"id":2,"name":"pgxc"} (2 rows)
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        数据库基础开发
        json和jsonb使用
        jsonb应用
      • COLUMN设计
        本页介绍天翼云TeleDB数据库的COLUMN设计规范。 建议能用数值类型的,就不用字符类型。 建议能用varchar(N)就不用char(N),以利于节省存储空间。 建议能用varchar(N)就不用text,varchar。 建议使用default NULL,而不用 default '',以节省存储空间。 建议如有国际货业务的话,使用timestamp with time zone(timestamptz),而不用 timestamp without time zone,避免时间函数在对于不同时区的时间点返回值不同,也为业务国际化扫清障碍。 建议使用NUMERIC(precision,scale)来存储货币金额和其它要求精确计算的数值, 而不建议使用real,double precision。
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        进阶开发
        开发规范
        COLUMN设计
      • 存储过程执行
        本页介绍天翼云TeleDB数据库存储过程执行的语法。 不带参数 plaintext teledb create or replace procedure pnopara() as $$ begin raise notice 'nopara procedure'; end; $$ language plpgsql; CREATE PROCEDURE teledb call pnopara(); NOTICE: nopara procedure CALL teledb 带参数 plaintext teledb create or replace procedure ppara(aint integer) as $$ begin raise notice 'aint %',aint; end; $$ language plpgsql; CREATE PROCEDURE teledb call ppara(1); NOTICE: aint 1 CALL teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        存储过程开发
        存储过程语法介绍
        存储过程执行
      • 游标使用
        提取剩下的所有数据 游标顺序往下遍历,提取所有数据 plaintext teledb fetch forward all from teledbcur; id goodsdesc beginunit begincity pubtime amount +++++ 8 旋挖附件35吨 河南省 三门峡市 20151005 10:48:38 9885.95 9 旋挖附件39吨 河南省 三门峡市 20151005 11:38:38 4971.79 10 设备 上海市 上海市 20151005 07:59:35 1784.63 11 普货40吨需13米半挂一辆 上海市 上海市 20151005 08:13:59 1425.64 (4 rows) 反向提取x行数据 plaintext teledb fetch backward 2 from teledbcur; id goodsdesc beginunit begincity pubtime amount +++++ 11 普货40吨需13米半挂一辆 上海市 上海市 20151005 08:13:59 1425.64 10 设备 上海市 上海市 20151005 07:59:35 1784.63 (2 rows) teledb fetch backward 3 from teledbcur; id goodsdesc beginunit begincity pubtime amount +++++ 9 旋挖附件39吨 河南省 三门峡市 20151005 11:38:38 4971.79 8 旋挖附件35吨 河南省 三门峡市 20151005 10:48:38 9885.95 7 旋挖附件38吨 河南省 三门峡市 20151005 10:48:38 9376.8 (3 rows) 游标反向移动,提取x行数据
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        数据库基础开发
        游标使用
      • 删除模式
        本文为您介绍如何删除模式。 plaintext teledb drop schema teledbschemaowner; DROP SCHEMA 当模式中存在对象时,则会删除失败,提示如下。 plaintext teledb create table teledbschemanew.test(id int); CREATE TABLE teledb drop schema teledbschemanew; ERROR: cannot drop schema teledbschemanew because other objects depend on it DETAIL: table teledbschemanew.test depends on schema teledbschemanew HINT: Use DROP ... CASCADE to drop the dependent objects too. 参考如下强制删除,会将模式中的对象也级联删除掉。 plaintext teledb drop schema teledbschemanew cascade; NOTICE: drop cascades to table teledbschemanew.test DROP SCHEMA
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        数据库基础开发
        DDL操作
        模式管理
        删除模式
      • 参数模式
        本页介绍天翼云TeleDB数据库PL/pgsql函数的参数模式。 参数模式总共有三种,分别是IN(传入参数,这个是默认方式)、OUT(返回值参数)、INOUT(传入返回值参数),下面介绍这几个参数模式的用法。 IN 模式 IN 模式指的是执行函数时需要输入参数值,如下所示。 plaintext teledb CREATE OR REPLACE FUNCTION f1(IN axm text) RETURNS TEXT AS teledb $$ teledb$ BEGIN teledb$ RETURN axm; teledb$ END; teledb$ $$ teledb LANGUAGE PLPGSQL; CREATE FUNCTION teledb SELECT f1('teledb'); f1 teledb (1 row) teledb CREATE OR REPLACE FUNCTION f1(axm text) RETURNS TEXT AS $$ BEGIN RETURN axm; END; $$ LANGUAGE PLPGSQL; CREATE FUNCTION teledb SELECT from f1('teledb'); f1 teledb (1 row) 上面两种方式定义的参数效果是一样的。 OUT 模式 OUT 模式参数是指定了函数执行时返回的字段名及类型。 plaintext teledb CREATE OR REPLACE FUNCTION f1(OUT axm text) RETURNS TEXT AS teledb $$ teledb$ BEGIN teledb$ axm: 'teledb'; teledb$ END; teledb$ $$ teledb LANGUAGE PLPGSQL; CREATE FUNCTION teledb teledb SELECT from f1(); axm teledb (1 row) 采用OUT模式参数不能用 RETURN 返回,而是要对返回的OUT参数直接赋值。返回值类型与参数的数据类型必需一致。参数名就是返回的字段名。 INOUT 模式 INOUT模式是指参数即传入,同时又指定了返回值的字段名和类型。 plaintext teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        PL:pgsql开发
        参数详细介绍
        参数模式
      • 参数数据类型
        域类型 plaintext teledb CREATE DOMAIN xb AS TEXT CHECK teledb ( teledb( VALUE '男' teledb( OR VALUE '女' teledb( OR VALUE '' teledb( ); CREATE DOMAIN teledb CREATE OR REPLACE FUNCTION f4 (axb public.xb) RETURNS VOID AS teledb $$ teledb$ BEGIN teledb$ RAISE NOTICE 'axb %',axb; teledb$ END; teledb$ $$ teledb LANGUAGE PLPGSQL; CREATE FUNCTION teledb SELECT FROM f4('男'); NOTICE: axb 男 f4 (1 row) teledb SELECT FROM f4('她'); ERROR: value for domain xb violates check constraint "xbcheck" 域类型输入参数值时会检查是否违反规则。 游标类型 plaintext teledb CREATE OR REPLACE FUNCTION f5 (aref refcursor) RETURNS void AS teledb $$ teledb$ DECLARE teledb$ vrec record; teledb$ BEGIN teledb$ OPEN aref FOR SELECT FROM t LIMIT 1; teledb$ FETCH aref INTO vrec; teledb$ RAISE NOTICE 'vrec % ',vrec; teledb$ END; teledb$ $$ teledb LANGUAGE PLPGSQL; CREATE FUNCTION teledb SELECT FROM f5('a'); NOTICE: vrec (1,teledb) f5 (1 row) teledb CREATE OR REPLACE FUNCTION f6 (aref refcursor) RETURNS refcursor AS teledb $$ teledb$ BEGIN teledb$ OPEN aref FOR SELECT FROM t LIMIT 1; teledb$ RETURN aref; teledb$ END; teledb$ $$ teledb LANGUAGE PLPGSQL; CREATE FUNCTION 这里需要开启一个事务 teledb BEGIN; BEGIN teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        PL:pgsql开发
        参数详细介绍
        参数数据类型
      • 返回两个结果的交集
        本文介绍如何在使用SELECT语法时,返回两个结果的交集。 plaintext teledb select from teledbpg intersect select from teledbpg1; id nickname + 3 pg (1 row)
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        数据库基础开发
        DML操作
        SELECT语法
        返回两个结果的交集
      • 删除存储过程
        本页介绍天翼云TeleDB数据库删除存储过程的语法。 删除不带参数的存储过程 plaintext teledb CREATE OR REPLACE PROCEDURE proc1() AS $$ begin raise notice 'Hello teledbpg'; end; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb drop procedure proc1 ( ); DROP PROCEDURE teledb 删除带参数的存储过程 plaintext teledb CREATE OR REPLACE PROCEDURE proc1(aint int) AS $$ begin raise notice '%',aint; end; $$ LANGUAGE PLPGSQL; CREATE PROCEDURE teledb drop procedure proc1 ( aint int); DROP PROCEDURE teledb 也可以只指定参数的类型即可。 plaintext teledb drop procedure proc1 (int); DROP PROCEDURE teledb
        来自:
        帮助文档
        分布式融合数据库HTAP
        私有云产品历史版本
        V2.0.0版本产品文档
        开发手册
        存储过程开发
        存储过程语法介绍
        删除存储过程
      • 1
      • ...
      • 135
      • 136
      • 137
      • 138
      • 139
      • ...
      • 170
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      云聚517 · 好价翼起拼

      爆款云主机低至25.83元/年,参与拼团享更多优惠,拼成得额外优惠券

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      聚力AI赋能 天翼云大模型专项

      大模型特惠专区·Token Plan 轻享包低至9.9元起

      青云志云端助力计划

      一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云

      企业出海解决方案

      助力您的业务扬帆出海,通达全球!

      天翼云信创专区

      “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      产品推荐

      轻量型云主机

      弹性伸缩服务 AS

      天翼云CTyunOS系统

      训推服务

      AI Store

      应用托管

      智算一体机

      人脸检测

      人脸属性识别

      推荐文档

      删除

      导入数据

      如何修改账号的密码?

      适用场景

      产品功能

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 息壤智算平台
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号