云服务器内容精选

  • 编辑应用环境变量 登录ServiceStage控制台。 选择“应用管理”。 单击待操作的应用名称,进入应用概览页面。 在左侧导航栏,单击“环境变量”。 在“环境”下拉列表选择已经创建的环境。 选择待编辑的变量名称,在“操作”栏单击“编辑”。 重新输入“变量名称”及“变量/变量引用”的值。 变量名称:应用环境变量的名称,在同一个环境下必须唯一。长度1到64个字符,可以包含英文字母、数字、下划线(_)、中划线(-)或点(.),以英文字母、下划线(_)或中划线(-)开头。 变量/变量引用:应用环境变量的值。 请您在配置环境变量时慎用敏感信息或者加密敏感信息,以免造成信息泄露。 单击“提交”,完成应用环境变量编辑。 图1 编辑应用环境变量
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 [数组元素] 是 Array of CreateVariableRequestBody objects 创建全局变量请求体 表3 CreateVariableRequestBody 参数 是否必选 参数类型 描述 id 是 Integer 变量ID name 是 String 变量名称 variable_type 是 Integer 变量类型(1:整数;2:枚举;3:文件;5:文本) variable 是 Array of objects 变量值 is_quoted 是 Boolean 是否被引用
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 code String 响应码 json CreateVariableResultJson object 响应json message String 响应消息 表5 CreateVariableResultJson 参数 参数类型 描述 variable_id Integer 变量ID 状态码: 501 表6 响应Body参数 参数 参数类型 描述 - String response message
  • URI DELETE /v1/{project_id}/variables 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 最小长度:0 最大长度:64 表2 Query参数 参数 是否必选 参数类型 描述 variable_id 是 Integer 全局变量ID test_suite_id 是 Integer 工程ID
  • 检索查询 对于常用的检索查询,嵌入式SQL提供了常规命令SELECT和FETCH的特殊变体。这些命令使用特殊的INTO子句,用以指定检索出来的数值存储在哪些宿主变量里。SELECT用于返回单行的查询,FETCH用于使用游标返回多行的查询。 使用SELECT /* * 假定有这个表: * CREATE TABLE test1 (a int, b varchar(50)); */ EXEC SQL BEGIN DECLARE SECTION; int v1; VARCHAR v2; EXEC SQL END DECLARE SECTION; ... EXEC SQL SELECT a, b INTO :v1, :v2 FROM test; INTO子句出现在选择列表和FROM子句之间。选择列表和INTO后面列表的元素(也叫目标列表)个数必须相同。 使用FETCH EXEC SQL BEGIN DECLARE SECTION; int v1; VARCHAR v2; EXEC SQL END DECLARE SECTION; ... EXEC SQL DECLARE foo CURSOR FOR SELECT a, b FROM test; ... do { ... EXEC SQL FETCH NEXT FROM foo INTO :v1, :v2; ... } while (...); 这里的INTO子句出现在所有SQL子句后面。 父主题: 宿主变量
  • 概述 在嵌入式SQL中进行C语言程序和SQL语句之间的数据传递不需要把数据粘贴到语句中,只需要在SQL语句里写上C语言变量的名称,前缀加一个冒号即可。示例如下: EXEC SQL INSERT INTO sometable VALUES (:v1, 'foo', :v2); 这个语句引用了两个C语言变量:v1和v2,并且使用一个普通的SQL字串文本,这表明一条SQL语句内并不限制只使用某一种数据。 父主题: 宿主变量
  • 类型映射 当ecpg应用程序在 GaussDB Kernel服务器和C语言程序之间交换值时(例如:从服务器检索查询结果或者执行带有输入参数的SQL语句),在GaussDB Kernel数据类型和宿主语言变量类型(具体的C语言数据类型)之间需要进行值的转换。有两种数据类型可以使用:简单的GaussDB Kernel数据类型,如integer和text,可以直接被应用程序读取和写入。其他GaussDB Kernel数据类型,如timestamp和numeric,只能通过特殊库函数进行访问,请参见ecpg接口参考章节。 表1 GaussDB Kernel数据类型和C变量类型之间的映射 GaussDB Kernel数据类型 宿主变量数据类型 smallint short integer int bigint long long int boolean boolean character(n), varchar(n), text char[n+1], VARCHAR[n+1] double precision double real float smallserial short serial int bigserial long long int oid unsigned int name char[NAMEDATALEN] date date [a] timestamp timestamp [a] interval interval [a] decimal decimal [a] numeric numeric [a] [a]这种类型可以通过访问特殊数据类型访问。 当前仅支持对于C语言的基本数据类型的使用或者组合,不支持C++语言中string数据类型用作宿主变量数据类型。 当前ecpg仅对GaussDB Kernel SQL的常用数据类型做映射,具体支持项请参见表1。 父主题: 宿主变量
  • 声明段 要实现嵌入式SQL-C程序和数据库间的数据交互(例如:从SQL-C程序把查询语句中的参数传递给数据库,或者从数据库向嵌入式SQL-C程序传回数据),需要在特殊的标记段里面声明包含此数据的C语言变量,以便预处理器能够识别。 标记段以下面的代码开始: EXEC SQL BEGIN DECLARE SECTION; 以下面的代码结束: EXEC SQL END DECLARE SECTION; 在此之间,必须有常规的C语言变量声明,比如: int x = 4; char foo[16], bar[16]; 标记段代码开始和结束之间声明的宿主变量类型必须为当前支持的数据类型,请参见表1。 可以隐式地创建一个声明段声明变量:EXEC SQL int i = 4。 不在SQL命令里使用的变量可以在特殊的声明段外面声明。 结构体或者联合体的定义也必须在DECLARE段中列出,否则预处理器就无法处理这些类型。 父主题: 宿主变量
  • 检索查询 对于常用的检索查询,嵌入式SQL提供了常规命令SELECT和FETCH的特殊变体。这些命令使用特殊的INTO子句,用以指定检索出来的数值存储在哪些宿主变量里。SELECT用于返回单行的查询,FETCH用于使用游标返回多行的查询。 使用SELECT /* * 假定有这个表: * CREATE TABLE test1 (a int, b varchar(50)); */ EXEC SQL BEGIN DECLARE SECTION; int v1; VARCHAR v2; EXEC SQL END DECLARE SECTION; ... EXEC SQL SELECT a, b INTO :v1, :v2 FROM test; INTO子句出现在选择列表和FROM子句之间。选择列表和INTO后面列表的元素(也叫目标列表)个数必须相同。 使用FETCH EXEC SQL BEGIN DECLARE SECTION; int v1; VARCHAR v2; EXEC SQL END DECLARE SECTION; ... EXEC SQL DECLARE foo CURSOR FOR SELECT a, b FROM test; ... do { ... EXEC SQL FETCH NEXT FROM foo INTO :v1, :v2; ... } while (...); 这里的INTO子句出现在所有SQL子句后面。 父主题: 宿主变量
  • 声明段 要实现嵌入式SQL-C程序和数据库间的数据交互(例如:从SQL-C程序把查询语句中的参数传递给数据库,或者从数据库向嵌入式SQL-C程序传回数据),需要在特殊的标记段里面声明包含此数据的C语言变量,以便预处理器能够识别。 标记段以下面的代码开始: EXEC SQL BEGIN DECLARE SECTION; 以下面的代码结束: EXEC SQL END DECLARE SECTION; 在此之间,必须有常规的C语言变量声明,比如: int x = 4; char foo[16], bar[16]; 标记段代码开始和结束之间声明的宿主变量类型必须为当前支持的数据类型,请参见表1。 可以隐式地创建一个声明段声明变量:EXEC SQL int i = 4。 不在SQL命令里使用的变量可以在特殊的声明段外面声明。 结构体或者联合体的定义也必须在DECLARE段中列出,否则预处理器就无法处理这些类型。 父主题: 宿主变量
  • 类型映射 当ecpg应用程序在GaussDB Kernel服务器和C语言程序之间交换值时(例如:从服务器检索查询结果或者执行带有输入参数的SQL语句),在GaussDB Kernel数据类型和宿主语言变量类型(具体的C语言数据类型)之间需要进行值的转换。有两种数据类型可以使用:简单的GaussDB Kernel数据类型,如integer和text,可以直接被应用程序读取和写入。其他GaussDB Kernel数据类型,如timestamp和numeric,只能通过特殊库函数进行访问,请参见ecpg接口参考章节。 表1 GaussDB Kernel数据类型和C变量类型之间的映射 GaussDB Kernel数据类型 宿主变量数据类型 smallint short integer int bigint long long int boolean boolean character(n), varchar(n), text char[n+1], VARCHAR[n+1] double precision double real float smallserial short serial int bigserial long long int oid unsigned int name char[NAMEDATALEN] date date [a] timestamp timestamp [a] interval interval [a] decimal decimal [a] numeric numeric [a] [a]这种类型可以通过访问特殊数据类型访问。 当前仅支持对于C语言的基本数据类型的使用或者组合,不支持C++语言中string数据类型用作宿主变量数据类型。 当前ecpg仅对GaussDB Kernel SQL的常用数据类型做映射,具体支持项请参见表1。 父主题: 宿主变量
  • 处理字符串 处理SQL字符串数据类型(例如:varchar、text),有两种方式来声明宿主变量: 方式一:使用char[](一个char字符串),C语言程序中处理字符数据最常见的方式。 EXEC SQL BEGIN DECLARE SECTION; char str[50]; EXEC SQL END DECLARE SECTION; 注意字符串必须控制长度,如果上述示例的宿主变量用作存放查询结果且查询命令返回的字符串长度超过49字节,那么将会发生缓冲区溢出。 方式二:使用VARCHAR类型,ecpg提供的一种特殊类型。在一个VARCHAR类型数组上的定义会被转变成一个struct类型。如下声明: VARCHAR var[180]; 会被转变成: struct varchar_var { int len; char arr[180]; } var; 要在一个VARCHAR宿主变量中存储一个字符串,该宿主变量必须被声明为包含零字节为终止符长度的字符串。字段arr存放以零字节为终止符的字符串,字段len存放存储在arr中的字符串的长度,计算长度时不包括终止符。当宿主变量被用于一个查询的输入时,如果strlen(arr)和len结果不同,将使用较短的那一个。 VARCHAR可以被写成大写或小写形式,但是不能大小写混合。 char和VARCHAR类型宿主变量也可以保存其他SQL类型的值,它们将被存储为字符串形式。 父主题: 宿主变量
  • 处理字符串 处理SQL字符串数据类型(例如:varchar、text),有两种方式来声明宿主变量: 方式一:使用char[](一个char字符串),C语言程序中处理字符数据最常见的方式。 EXEC SQL BEGIN DECLARE SECTION; char str[50]; EXEC SQL END DECLARE SECTION; 注意字符串必须控制长度,如果上述示例的宿主变量用作存放查询结果且查询命令返回的字符串长度超过49字节,那么将会发生缓冲区溢出。 方式二:使用VARCHAR类型,ecpg提供的一种特殊类型。在一个VARCHAR类型数组上的定义会被转变成一个struct类型。如下声明: VARCHAR var[180]; 会被转变成: struct varchar_var { int len; char arr[180]; } var; 要在一个VARCHAR宿主变量中存储一个字符串,该宿主变量必须被声明为包含零字节为终止符长度的字符串。字段arr存放以零字节为终止符的字符串,字段len存放存储在arr中的字符串的长度,计算长度时不包括终止符。当宿主变量被用于一个查询的输入时,如果strlen(arr)和len结果不同,将使用较短的那一个。 VARCHAR可以被写成大写或小写形式,但是不能大小写混合。 char和VARCHAR类型宿主变量也可以保存其他SQL类型的值,它们将被存储为字符串形式。 父主题: 宿主变量
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 variable_value String 变量值支持英文字母、数字、英文格式的下划线、中划线,斜线(/)、点、冒号,1 ~ 255个字符。 env_id String 环境编号 最小长度:1 最大长度:65 group_id String API分组编号 最小长度:1 最大长度:65 variable_name String 变量名,支持英文字母、数字、英文格式的下划线、中划线,必须以英文字母开头,3~32个字符。在API定义中等于#Name的值#部分(区分大小写),发布到环境里的API被变量值替换。 说明: 中文字符必须为UTF-8或者unicode编码。 id String 环境变量编号 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 响应示例 状态码: 201 Created { "variable_value" : "192.168.1.5", "env_id" : "7a1ad0c350844ee69479b47df9a881cb", "group_id" : "c77f5e81d9cb4424bf704ef2b0ac7600", "id" : "25054838a624400bbf2267cf5b3a3f70", "variable_name" : "address" } 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:instance_id. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3003", "error_msg" : "The instance does not exist;id:f0fa1789-3b76-433b-a787-9892951c620ec" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }