MySql中一个简单的存储过程刷数据库数据

MySQL同一个表中批量刷数据 MySQL同一个表中批量刷数据(在已有类似表或字段的情况下) 注意: t2是要更新的表 t1是与t2有相同字段的表,也是参考表 下面的例子,将test_db.test_table_dou表中id=1的数据信息复用到id=2的信息,同时,需要name字段的取值相同,要刷新的字段有desp、unit、usage、fun UPDATE test_db.test_table_dou t2 INNER ... 阅读详情

今天有朋友问我用orcale存储过程刷数据库数据怎么写的,他的要求是两张表,一张表里面字段为空的话,就从另外一张表中取数据更新这个表.orcale中写完之后,突然想到在mysql中怎么写呢,于是在网上找了一下资料.特意在此记录一下写法.(orcale的待会也补上!!!)


因为原来mysql中就有两张表,就懒得建表了.修改两张表的数据如下:






现在如果email表中的content为空的话,就用student表中的fenshu更新数据,代码如下:

create procedure my_procedure() -- 创建存储过程  
begin -- 开始存储过程  
declare my_id int; -- 自定义变量1  
declare my_content varchar(50); -- 自定义变量2  
DECLARE done INT DEFAULT FALSE; -- 自定义控制游标循环变量,默认false 
  
DECLARE My_Cursor CURSOR FOR (select id,content from email where content is null or content = ''); -- 定义游标并输入结果集 结果集越少越好
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 绑定控制变量到游标,游标循环结束自动转true  
  
OPEN My_Cursor; -- 打开游标  
  myLoop: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到  
    FETCH My_Cursor into my_id, my_content; -- 将游标当前读取行的数据顺序赋予自定义变量12  
    IF done THEN -- 判断是否继续循环  
      LEAVE myLoop; -- 结束循环  
    END IF;  
    -- 自己要做的事情,在 sql 中直接使用自定义变量即可  
    -- if(my_content is null or my_content = '') then 这样写的循环次数太多了
      update email set content = (select fenshu from student where id = my_id) where id = my_id;
      COMMIT; -- 提交事务
   -- end if;  
  END LOOP myLoop; -- 结束自定义循环体  
  CLOSE My_Cursor; -- 关闭游标  
END; -- 结束存储过程  


-- sql 执行存储过程  
 call my_procedure();   

-- select * from email 

-- sql 删除存储过程  
drop procedure my_procedure; 


编译过后执行存储过程,结果如图:



可以清楚的发现email中的数据被更新了.



浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系 文章背景:相信大部分刚接触上面三个概念的同学,都多多少少会有些迷惑,现在我就给大家简单分析下这三者的关系,希望大家对这三者的概念理解有所帮助吧。本文主要从下面两类关系来叙述上面三者的关系: 数据库(DB)和数据仓库(DW)的区别与联系 操作数据存储(ODS)和数据仓库(DW)的区别与联系 数据库与数据仓库的区别与联系数据库与数据仓库基础概念:数据库:传统的关系型数据库的主要应用,主要是基本的、日常的 阅读详情

相关推荐

[PayPal报错]为遵守国际法规,这笔交易已被拒绝。

PayPal报错解决:为遵守国际法规,这笔交易已被拒绝。

qq_39906413的博客 1万+

修复存量数据技巧之【存储过程】

开发迭代的过程,你是否经常遇到需要考虑:增量、存量数据如何处理的场景?比如一个新功能,对增量的数据不用过多考虑,不过对存量的数据,需要处理后才能满足升级需求。这里简单记录下在修复存量数据过程中可能会用到的一个技巧【存储过程】。存储过程一般很少用,笔者写过和接触过的存储过程寥寥无几。有的领导在编码规则中会专门强调尽量不用或者少用存储过程。不过,在修复数据,数据量不大又需要遍历的时候,走走存储过程还是蛮方便的。数据库前期业务未考虑幂等,未对关键的几个字段比如:company_id、employee_id, ty

起舞的日子 1133

网络变压器等效电路及网络变压器中间抽头作用详解

       华强盛电子导读:要详细了解网络变压器周边EMC管控及网络变压器BOB-SMITH电路的连接原理,首先我们对网络变压器的认识及其电路各参数影响都要有个简要的认识,本文,对非理想网络变压器等效电路做一个详细的分析,其中重点讨论一下网络变压器中间抽头的作用其影响                          网络变压器等效电路及                        ...

网络变压器专业资料 6005

MySQL使用存储过程造数据

MySQL使用存储过程造数据

Dangerous 1186

Cadence IC618/Spectre231安装避坑指南:详解License配置、环境变量隔离与依赖检查

本文详细介绍了Cadence IC618/Spectre231的安装与配置避坑指南,包括许可证系统精妙控制、环境隔离模块化实践、依赖管理进阶技巧以及长期维护的黄金法则。通过实战案例和解决方案,帮助工程师构建稳定可靠的EDA工作环境,提升芯片设计效率。

weixin_28683065的博客 460

Xilinx Vivado vitis IDE launch Failed \ Web installer client Obsolete 怎么办

Xilinx vitis_IDE failed Web installer client Obsolete

weixin_44820962的博客 8644

Mysql场景刷数据库脚本方法和顺序

新建环境 脚本可以按如下几步按顺序在数据库中执行。 CreateUser.sql 该文件中放创建用户,创建数据库,将数据库的执行权限赋给用户的相关语句。 举例如下: CreateTable.sql 该文件中放业务需要的表结构的创建语句。 举例如下   插入预置数据 InsertData.sql        该文件中放业务需要的初始化数据   升级环境 当环境已经发布过,...

kongtiao5的专栏 2821

2.1 直流无刷电机(BLDC):机械结构与组件

本文详细解析了直流无刷电机(BLDC)的机械结构与核心组件。BLDC电机通过电子换向取代传统机械电刷,主要包含定子、转子、位置传感器和电子换向器四大组件。定子采用硅钢片叠压结构,配有三相绕组;转子采用永磁体材料,结构设计影响转矩特性;位置传感器(霍尔、编码器、旋转变压器)实现精准换向;电子换向器通过功率逆变拓扑完成电流控制。文章还对比了不同绕组类型、永磁材料及传感器技术的性能特点,为BLDC电机的设计与应用提供了理论基础。

技术工作者 388

mysql 通过存储过程批量更新表数据

方法一:使用临时表批量更新表数据 (注意操作用户需要有mysql的创建临时表权限) delimiter $$ # 删除 已有的 存储过程  DROP PROCEDURE IF EXISTS update_user_account_method;   # 创建新的存储过程  CREATE PROCEDURE update_user_account_method() -- 批量更新HIK+...

pearkerChen 4623

s8654

The official Snapdragon Ride SX 4.0 development board provides standardized hardware support for the secondary development and functional verification of the s8654 platform.

qq_39257814的博客 6828

CARLA仿真:自定义地图与AI车辆行为编程

CARLA仿真:自定义地图与AI车辆行为编程 ,人工智能,计算机视觉,大模型,AI,本文围绕CARLA仿真平台,介绍了其基础功能与安装方法,详解地图系统,包括预设地图的加载切换及自定义地图的创建、导入与优化。还阐述了AI车辆的创建、属性设置、销毁,以及行为控制,如交通规则遵守、路径规划、复杂行为编程和行为树应用。同时涉及传感器与车辆感知、交通场景构建、自定义地图与AI行为结合应用、高级应用,以及常见问题解决方案和学习资源,为CARLA仿真应用提供全面指导。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 11万+

5、MySQL修改数据库:ALTER DATABASE用法简介

在 MySQL 数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面我们来介绍一下修改数据库的基本操作。 在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>} 语法说明如下: A

you can you up up up的博客 2711

【YOLOv10改进[Backbone]】使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发

使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发 + 遥遥领先

静谧、淡雅 2858

Mysql数据库:存储过程

本文主要介绍mysql数据库的存储过程,包含了一系列用于执行特定任务的SQL语句集合,可通过调用过程名快速高效的执行一系列复杂的SQL语句,详细阐释如何创建和调用存储过程,希望对你有帮助!

十七拾的博客 4311

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Redis、MySQL、hive、hbase的区别以及数据库及数据仓库的比较

redis:分布式缓存,强调缓存,基于内存 传统数据库:注重关系,注重事务性 hbase:列式数据库,字典查询,稀疏性存储,无法做关系数据库的主外键,用于存储海量数据,底层基于hdfs hive:数据仓库工具,底层是mapreduce。不是数据库,不能用来做用户的交互存储 HBase和Redis都是基于Key、Value的数据库。 ...

qq_39682761的博客 7458

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

10分钟学会写一个简单的Mysql存储过程

一、什么是存储过程二、存储过程怎么创建三、查看四、执行1、执行说明2、开始执行五、删除存储过程六、Mysql高版本:this is incompatible with sql_mode=only_full_group_by 问题 一、什么是存储过程 存储过程是一组为了完成特定功能的 SQL 语句集合。使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。当以后需要数据库提供与已定义好的存储过程的功能相同的服务.

夏已微凉、 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

MySQL创建数据库(CREATE DATABASE语句)

在 MySQL 中,可以使用CREATE DATABASE语句创建数据库,语法格式如下: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>]; [ ]中的内容是可选的。语法说明如下: &l...

weixin_42145502的博客 9950

mysql 新建database_MySQL创建数据库(CREATE DATABASE语句)

在MySQL 中,可以使用CREATE DATABASE 语句创建数据库,语法格式如下:CREATE DATABASE [IF NOT EXISTS] [[DEFAULT] CHARACTER SET ][[DEFAULT] COLLATE ];[ ]中的内容是可选的。语法说明如下::创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文...

weixin_30441727的博客 7048

MySQL修改数据库:ALTER DATABASE用法简介

数据库创建好后也是可以修改的,下面我们来介绍一下修改数据库的基本操作 基本语法 在 MySQL 中,可以使用 ALTER DATABASE 或 ALTER SCHEMA 语句来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ D...

MYSQL安装教程 2077

使用mysql数据库的存储过程造批量测试数据

我们在做功能测试和性能测试的时候,经常需要造成百上千的测试数据,以便进行一些批量数据的测试。在mysql中造数据有很多的方法,今天我们讲解一下使用存储过程来造批量数据。在这篇文章中,我们将一步步介绍如何创建一个简单的 MySQL 存储过程,以插入包含随机数字、小数、varchar、日期和 ID 等字段的 1000 条数据。

公众号【伤心的辣条】资料领取~ 1147

数据库存储过程简单介绍

存储过程 存储过程就是一条或多条SQL语句的集合 当对数据库进行一系列的操作时 存储过程就可以将这些复杂的操作封装成一个代码块 以便重复使用 大大减少了数据库开发人员的工作量 创建存储过程 创建存储过程的基本语法 CREATE PROCEDURE 存储过程名称([存储过程的参数列表]) [存储过程的特性]routine_body 存储过程的参数列表语法如下 ([[IN|OUT|INOUT]参数名...

luckyxs的博客 1万+

db文件怎么修改_详解MySQL数据库的db.opt文件含义及作用

概述MySQL数据库存放数据目录里的db.opt文件是MySQL建库过程中自动生成的。细心的朋友可能会发现有时候在MySQL数据库的某些库目录下有个db.opt文件,那这个文件是干什么用的呢?如果你用记事本等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的。db.optMySQL的每个数据库目录中有一个文件db.opt,该文件主要 用来存储当前数据库的默认字符集和字...

weixin_39856607的博客 2467

MySQL之修改数据库(ALTER DATABASE用法简介)

语法 数据库建立以后我们也是可以进行修改的,我们可以使用ALTER DATABASE或 ALTER SCHEMA 语句来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>} ALTE...

qq_38523616的博客 3226

mysql alter database_MySQL修改数据库:ALTER DATABASE用法简介

在MySQL数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面我们来介绍一下修改数据库的基本操作。在 MySQL 中,可以使用ALTER DATABASE来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:ALTER DATABASE [数据库名] {[ DEFAULT ] CHARACTER SET |[ DEFAULT ]...

weixin_35084134的博客 2393
上一篇: oracle plsql修改数据时ORA-01480: STR 绑定值的结尾 Null 字符缺失 的错误解决办法。
下一篇: Orcale中一个简单的存储过程刷数据库数据
Java_wucao
博客等级 码龄11年 272粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java_wucao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值