华为云用户手册

  • 方法详情 public Object put(String key, Object value) 设置配置参数 输入参数 key:配置信息key value:配置信息value 支持以下配置参数: jco.client.ashost:SAP服务器IP jco.client.sysnr:系统编号 jco.client.client:SAP集团 jco.client.user:SAP用户名 jco.client.passwd:密码 jco.client.lang:登录语言 jco.destination.pool_capacity:最大连接数 jco.destination.peak_limit:最大连接线程 apic.async:是否为异步调用。"true"表示异步调用,默认为同步调用 返回信息 返回value
  • 构造器详情 com.roma.apic.livedata.client.v1.HttpClient public HttpClient() 构造一个无参数的HttpClient。 public HttpClient(HttpConfig config) 构造一个包含HttpConfig配置信息的HttpClient。 参数:config表示传入HttpClient的配置信息。 com.huawei.livedata.lambdaservice.livedataprovider.HttpClient public HttpClient() 构造一个无参数的HttpClient。
  • 使用示例 com.roma.apic.livedata.client.v1.HttpClient importClass(com.roma.apic.livedata.client.v1.HttpClient);importClass(com.roma.apic.livedata.provider.v1.APIConnectResponse);function execute(data) { var httpClient = new HttpClient(); var resp = httpClient.request('GET', 'http://apigdemo.exampleRegion.com/api/echo', {}, null, 'application/json'); myHeaders = resp.headers(); proxyHeaders = {}; for (var key in myHeaders) { proxyHeaders[key] = myHeaders.get(key); } return new APIConnectResponse(resp.code(), proxyHeaders, resp.body().string(), false);} com.huawei.livedata.lambdaservice.livedataprovider.HttpClient importClass(com.huawei.livedata.lambdaservice.livedataprovider.HttpClient);function excute(data) { var httpExecutor = new HttpClient(); var obj = JSON.parse(data); var host = 'xx.xx.xxx.xx:xxxx'; var headers = { 'clientapp' : 'FunctionStage' }; var params = { 'employ_no' :'00xxxxxx' }; var result = httpExecutor.callGETAPI(host,'/livews/rest/apiservice/iData/personInfo/batch',JSON.stringify(params),JSON.stringify(headers)); return result;}
  • 场景说明 ROMA Connect的消息集成MQS完全兼容开源Kafka协议,业务应用需要开发并集成开源Kafka客户端或ROMA Connect提供的RESTful API,实现与MQS的消息连接。 集成开源客户端:业务应用直接集成开源Kafka客户端,并通过客户端连接MQS,实现消息的生产和消费。 集成RESTful API:业务应用通过调用RESTful API,连接MQS并实现消息的生产和消费。 入门版规格实例不支持RESTful API方式连接MQS。
  • 调用API示例 在工程中引入sdk(signer.go)。 import "apig-sdk/go/core" 生成一个新的Signer,输入API所授权凭据的Key和Secret,可参考获取API的调用信息获取。 s := core.Signer{// Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. Key: os.Getenv("HUAWEICLOUD_SDK_AK"), Secret:os.Getenv("HUAWEICLOUD_SDK_SK"),} 生成一个新的Request,指定 域名 、方法名、请求url、query和body,可参考获取API的调用信息获取。 r, _ := http.NewRequest("POST", "http://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/api?a=1&b=2", ioutil.NopCloser(bytes.NewBuffer([]byte("foo=bar")))) 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 r.Header.Add("x-stage", "RELEASE") 进行签名,执行此函数会在请求中添加用于签名的X-Sdk-Date头和Authorization头。 s.Sign(r) 若使用系统分配的子域名访问https请求的API时,需要忽略证书校验,否则跳过此步。 client:=&http.Client{ Transport:&http.Transport{ TLSClientConfig:&tls.Config{InsecureSkipVerify:true}, },} 访问API,查看访问结果。 resp, err := http.DefaultClient.Do(r)body, err := ioutil.ReadAll(resp.Body)
  • 调用接口步骤 获取Token 。 请参考《 统一身份认证 服务 API参考》的“获取用户Token”接口,获取Token。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 请求内容示例如下: POST https://{iam_endpoint}/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "id": "xxxxxxxx" } } }} 其中: {iam_endpoint}请参见地区和终端节点获取。 username为用户名。 domainname为用户所属的账号名称。 ********为用户登录密码。 xxxxxxxx为项目ID。 项目ID可以在管理控制台上,单击用户名,在下拉列表中单击“我的凭证”,查看“项目ID”。 调用业务接口,在请求消息头中增加“X-Auth-Token”,“X-Auth-Token”的取值为1中获取的Token。
  • 准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Go:安装1.14及以上版本的Go安装包,安装包请至Go官方下载页面下载。 Python:安装2.7或3.X版本的Python安装包,安装包请至Python官方下载页面下载。 JavaScript:安装15.10.0及以上版本的Nodejs安装包,安装包请至Nodejs官方下载页面下载。 PHP:安装8.0.3及以上版本的PHP安装包,安装包请至PHP官方下载页面下载。 Android:安装4.1.2及以上版本的Android Studio,安装包请至Android Studio官方网站下载。
  • 调用API示例 在工程中引入sdk。 using APIGATEWAY_SDK; 生成一个新的Signer, 输入API所授权凭据的Key和Secret,可参考获取API的调用信息获取。 Signer signer = new Signer();// Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK.signer.Key = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_AK");signer.Secret = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_SK"); 生成一个Request对象,指定方法名、请求url和body,可参考获取API的调用信息获取。 HttpRequest r = new HttpRequest("POST", new Uri("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?query=value"));r.body = "{\"a\":1}"; 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 r.headers.Add("x-stage", "RELEASE"); 进行签名,执行此函数会生成一个新的HttpWebRequest,并在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。 1 HttpWebRequest req = signer.Sign(r); 若使用系统分配的子域名访问https请求的API,需要忽略证书校验,否则跳过此步。 System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(delegate { return true; }); 访问API,查看访问结果。 var writer = new StreamWriter(req.GetRequestStream());writer.Write(r.body);writer.Flush();HttpWebResponse resp = (HttpWebResponse)req.GetResponse();var reader = newStreamReader(resp.GetResponseStream());Console.WriteLine(reader.ReadToEnd());
  • 操作场景 当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在调用接口时增加“X-Auth-Token”到业务接口请求消息头中。 调用接口有如下两种认证方式,您可以选择其中一种进行认证鉴权。 Token认证:通过Token认证调用请求。 AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)对调用请求内容进行签名认证。 Site实例中不支持 IAM 认证开发。
  • 调用API示例 在Android工程中的“app/libs”目录下,加入SDK所需jar包。其中jar包必须包括: java-sdk-core-x.x.x.jar joda-time-2.10.jar 在“build.gradle”文件中加入okhttp库的依赖。 在“build.gradle”文件中的“dependencies”下加入“implementation 'com.squareup.okhttp3:okhttp:3.14.2'”。 dependencies { ... ... implementation 'com.squareup.okhttp3:okhttp:3.14.3'} 创建request,输入API所授权凭据的Key和Secret,并指定方法名、请求url和body,可参考获取API的调用信息获取。 Request request = new Request();try {// Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. request.setKey(System.getenv("HUAWEICLOUD_SDK_AK"));request.setSecrect(System.getenv("HUAWEICLOUD_SDK_SK"));request.setMethod("POST");request.setUrl("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1");request.addQueryStringParam("name", "value");request.addHeader("Content-Type", "text/plain");request.setBody("demo");} catch (Exception e) {e.printStackTrace();return;} 对请求进行签名,生成okhttp3.Request对象来访问API。 okhttp3.Request signedRequest = Client.signOkhttp(request);OkHttpClient client = new OkHttpClient.Builder().build();Response response = client.newCall(signedRequest).execute();
  • 概述 spring-kafka兼容开源Kafka客户端,其与开源Kafka客户端的版本对应关系可参见Spring官网。spring-kafka兼容的Kafka客户端版本主要为2.x.x版本,而ROMA Connect消息集成的Kafka服务端版本为1.1.0、2.7版本。因此在Spring Boot项目工程中使用spring-kafka连接ROMA Connect时,请确保客户端与服务端的Kafka版本一致。 若spring-kafka连接的ROMA Connect实例为Kafka 1.1.0版本时,大部分的功能可以正常使用,仅少数新增功能不支持。经排查验证,以下为不支持的功能,除此以外的其他功能暂未发现问题。如果在使用过程中遇到其他问题,请提工单联系技术支持。
  • 不支持消费者组静态成员功能 Kafka客户端在2.3版本新增了Consumer参数“group.instance.id”,设置了该ID的消费者被视为一个静态成员。 配置文件: src/main/resources/application.yml 配置项: spring: kafka: consumer: properties: group.instance.id: xxx 使用限制: 不能添加“group.instance.id”参数配置。
  • 重视消息生产与消费的确认过程 消息生产 生产消息后,生产者需要根据ROMA Connect的返回信息确认消息是否发送成功,如果返回失败需要重新发送。 每次生产消息,生产者都需要等待消息发送API的应答信号,以确认消息是否成功发送。在消息传递过程中,如果发生异常,生产者没有接收到发送成功的信号,生产者自己决策是否需要重复发送消息。如果接收到发送成功的信号,则表明该消息已经被ROMA Connect可靠存储。 消息消费 消息消费时,消费者需要确认消息是否已被成功消费。 生产的消息被依次存储在ROMA Connect的存储介质中。消费时依次获取ROMA Connect中存储的消息。消费者获取消息后,进行消费并记录消费成功或失败的状态,并将消费状态提交到ROMA Connect,由ROMA Connect决定消费下一批消息或回滚重新消费消息。 在消费过程中,如果出现异常,没有提交消费确认,该批消息会在后续的消费请求中再次被获取。
  • 开发规范 开发工具版本要求: IntelliJ IDEA:2018.3.5或以上版本。 Eclipse:3.6.0或以上版本。 Visual Studio:2019 version 16.8.4或以上版本。 开发语言环境版本要求: Java:1.8.111或以上版本的Java Development Kit。 Python:2.7或3.X版本的Python。 Go:1.14及以上版本的Go。 C#:6.0及以上版本的.NET。 客户端版本使用建议: ROMA Connect的Kafka版本 Kafka客户端建议版本 1.1.0 Java:1.1.0及以上版本 Python:2.0.1及以上版本 Go:1.8.2及以上版本 C#:1.5.2及以上版本 2.7 Java:2.7.2及以上版本 Python:2.0.1及以上版本 Go:1.8.2及以上版本 C#:1.5.2及以上版本 客户端开发和配置建议: 请参见客户端使用建议和客户端参数配置建议。 父主题: 开发说明
  • 消息生产与消费的幂等传递 ROMA Connect设计了一系列可靠性保障措施,确保消息不丢失。例如使用消息同步存储机制防止系统与服务器层面的异常重启或者掉电,使用消息确认(ACK)机制解决消息传输过程中遇到的异常。 考虑到网络异常等极端情况,用户除了做好消息生产与消费的确认,还需要配合ROMA Connect完成消息发送与消费的重复传输设计。 当无法确认消息是否已发送成功,生产者需要将消息重复发送给ROMA Connect。 当重复收到已处理过的消息,消费者需要告知ROMA Connect消费成功且保证不重复处理。
  • 消息可以批量生产和消费 为提高消息发送和消息消费效率,推荐使用批量消息发送和消费。通常,默认消息消费为批量消费,而消息发送尽可能采用批量发送,可以有效减少API调用次数。 如下面两张示意图对比所示,消息批量生产与消费,可以减少API调用次数,节约资源。 图1 消息批量生产与消费 批量发送消息时,单次不能超过10条消息,总大小不能超过512KB。 批量生产(发送)消息可以灵活使用,在消息并发多的时候,批量发送,并发少时,单条发送。这样能够在减少调用次数的同时保证消息发送的实时性。 图2 消息逐条生产与消费 此外,批量消费消息时,消费者应按照接收的顺序对消息进行处理、确认,当对某一条消息处理失败时,不再需要继续处理本批消息中的后续消息,直接对已正确处理的消息进行确认即可。
  • 不支持zstd压缩类型 Kafka在2.1.0版本新增了zstd压缩类型,而1.1.0版本的Kafka不支持zstd压缩类型。 配置文件: src/main/resources/application.yml 配置项: spring: kafka: producer: compression-type: xxx 使用限制: “compression-type”的值不能设置为“zstd”。
  • 前提条件 准备装有1.8及以上版本JDK的Linux服务器。 IntelliJ IDEA版本为:2018.3.5或以上版本,Eclipse版本为:3.6.0或以上版本。 通过Demo(sha256:34c9bc8d99eba4ed193603019ce2b69afa3ed760a452231ece3c89fd7dd74da1)获取RealtimeConnector.rar包。 用户程序向MQS写入消息的TPS不能超过6000/s。
  • 准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Python:安装2.7或3.X版本的Python安装包,安装包请至Python官方下载页面下载。
  • 前提条件 已获取API的调用信息,具体请参见开发准备。 已安装开发工具和JavaScript开发语言环境,具体请参见开发准备。 Nodejs安装后,在命令行中,用npm安装“moment”和“moment-timezone”模块。 npm install moment --savenpm install moment-timezone --save 已在IntelliJ IDEA中安装NodeJS插件,如果未安装,请按照图1所示安装。 图1 安装NodeJS插件 浏览器版本为Chrome 89.0或以上版本。
  • 调用API(Node.js)示例 在工程中引入signer.js。 var signer = require('./signer')var http = require('http') 生成一个新的Signer,输入API所授权凭据的Key和Secret,可参考获取API的调用信息获取。 var sig = new signer.Signer()// Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. sig.Key = process.env.HUAWEICLOUD_SDK_AKsig.Secret = process.env.HUAWEICLOUD_SDK_SK 生成一个Request对象,指定方法名、请求url和body,可参考获取API的调用信息获取。 var r = new signer.HttpRequest("POST", "c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?a=1");r.body = '{"a":1}' 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 r.headers = { "x-stage":"RELEASE" } 进行签名,执行此函数会生成请求参数,用于创建http(s)请求,请求参数中添加了用于签名的X-Sdk-Date头和Authorization头。 var opts = sig.Sign(r) 访问API,查看访问结果。如果使用https访问,则将“http.request”改为“https.request”。 var req=http.request(opts, function(res){ console.log(res.statusCode) res.on("data",function(chunk){console.log(chunk.toString())})})req.on("error",function(err){console.log(err.message)})req.write(r.body)req.end()
  • 响应消息 响应参数 参数 类型 说明 handler String 消息handler。 message Object 消息的内容。 表2 message参数 参数 类型 说明 content String 消息体的内容。Base64加密密文。 响应示例 [ { "handler": "NCMxMDAjMTgjMA==", "message": { "content": "ImhlbGxvIGh1YXdlaWNsb3VkLTIi" } }]
  • URI GET /v1/topic/{topic_name}/group/{group_name}/messages?ack_wait={ack_wait}& time_wait={time_wait}&max_msgs={max_msgs} 表1 参数说明 参数 类型 必选 说明 topic_name String 是 主题名称。 group_name String 是 消费组名称。长度不超过249位的字符串,包含a~z,A~Z,0~9、中划线(-)和下划线(_)。 ack_wait Integer 否 提交确认消费的超时时间,客户端需要在该时间内提交消费确认,如果超过指定时间,没有确认消费,系统会报消息确认超时或handler无效,则默认为消费失败。取值范围:1~300s。默认值:15s time_wait Integer 否 设定队列可消费的消息为0时的读取消息等待时间。 如果在等待时间内有新的消息,则立即返回消费结果,如果等待时间内没有新的消息,则到等待时间后返回消费结果。取值范围:1~30s。 默认值:3s max_msgs Integer 否 获取可消费的消息的条数。取值范围:1~10。默认值:10 max_bytes Integer 否 每次消费的消息总负载最大值。取值范围:1~ 2097152。默认值:524288。
  • 修改配置信息 为了方便,下文分生产与消费两个配置文件介绍。如果ROMA Connect实例开启了SASL认证,在Java客户端的配置文件中必须配置涉及SASL认证的相关信息,否则无法连接。如果没有使用SASL认证,请注释掉相关配置。 生产消息配置文件(对应生产消息代码中的mqs.sdk.producer.properties文件) 以下粗体部分为不同MQS特有的信息,必须修改。客户端其他参数,可以自主添加。 #Topic名称在具体的生产与消费代码中。########################举例:bootstrap.servers=192.168.0.196:9095,192.168.0.196:9096,192.168.0.196:9094bootstrap.servers=ip1:port1,ip2:port2,ip3:port3#发送确认参数acks=all#键的序列化方式key.serializer=org.apache.kafka.common.serialization.StringSerializer#值的序列化方式value.serializer=org.apache.kafka.common.serialization.StringSerializer#producer可以用来缓存数据的内存大小buffer.memory=33554432#重试次数retries=0########################如果不使用SASL认证,以下参数请注释掉。########################设置用户名和密码sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="username" \ password="********";#SASL鉴权方式sasl.mechanism=PLAIN#加密协议,目前支持SASL_SSL协议security.protocol=SASL_SSL#ssl truststore文件的位置ssl.truststore.location=E:\\temp\\client.truststore.jks#ssl truststore文件的密码,固定,请勿修改。配置此密码是为了访问Java生成的jks文件。ssl.truststore.password=dms@kafkassl.endpoint.identification.algorithm= 示例代码中的参数说明,可参考获取MQS连接信息获取参数值。 bootstrap.servers:MQS连接地址和端口。 username和password:开启SASL_SSL认证时所使用的用户名和密码。 ssl.truststore.location:开启SASL_SSL认证时所使用的客户端证书。 消费消息配置文件(对应消费消息代码中的mqs.sdk.consumer.properties文件) 以下粗体部分为不同MQS特有的信息,必须修改。客户端其他参数,可以自主添加。 #Topic名称在具体的生产与消费代码中。########################举例:bootstrap.servers=192.168.0.196:9095,192.168.0.196:9096,192.168.0.196:9094bootstrap.servers=ip1:port1,ip2:port2,ip3:port3#用来唯一标识consumer进程所在组的字符串,请您自行设定。#如果设置同样的group id,表示这些processes都是属于同一个consumer groupgroup.id=1#键的序列化方式key.deserializer=org.apache.kafka.common.serialization.StringDeserializer#值的序列化方式value.deserializer=org.apache.kafka.common.serialization.StringDeserializer#偏移量的方式auto.offset.reset=earliest########################如果不使用SASL认证,以下参数请注释掉。########################设置jaas账号和密码,通过控制台设置sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="username" \ password="********";#SASL鉴权方式sasl.mechanism=PLAIN#加密协议,目前支持SASL_SSL协议security.protocol=SASL_SSL#ssl truststore文件的位置ssl.truststore.location=E:\\temp\\client.truststore.jks#ssl truststore文件的密码,配置此密码是为了访问Java生成的jks文件。ssl.truststore.password=dms@kafkassl.endpoint.identification.algorithm= 示例代码中的参数说明,可参考获取MQS连接信息获取参数值。 bootstrap.servers:MQS连接地址和端口。 group.id:消费组名称。根据业务需要,自定义消费组名称,如果设置的消费组不存在,系统会自动创建。 username和password:开启SASL_SSL认证时所使用的用户名和密码。 ssl.truststore.location:开启SASL_SSL认证时所使用的客户端证书。
  • 方法列表 返回类型 方法和说明 static String json2Xml(String json) json转xml static String xml2Json(String xml) xml转json static String json2XmlWithoutType(String json) json转xml static HashMap jsonToMap(String json) json转map
  • 示例 { "devices": [{ "deviceId": "D68NZxB4", "services": [{ "data": { "key": "value" }, "eventTime": "20191023T173625Z", "serviceId": "serviceName" }] }]}
  • 方法详情 public static String json2Xml(String json) json转xml 输入参数 json:json格式的字符串 返回信息 返回xml格式字符串 public static String xml2Json(String xml) xml转json 输入参数 xml:xml格式的字符串 返回信息 返回json格式字符串 public static String json2XmlWithoutType(String json) json转xml 输入参数 json:json格式的字符串 返回信息 返回xml格式字符串 public static HashMap jsonToMap(String json) json转map 输入参数 json:json格式的字符串 返回信息 返回map格式字符串
  • 构造器详情 public RabbitMqConfig(ConnectionConfig connectionConfig, QueueConfig queueConfig, ExchangeConfig exchangeConfig) 构造一个RabbitMQ客户端配置。 参数: connectionConfig表示客户端连接配置。 queueConfig表示队列配置。 exchangeConfig表示交换器配置。
  • 准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装3.0.3及以上版本Apache Maven,安装包请至Maven官方下载页面下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Python:安装2.7或3.X版本的Python,安装包请至Python官方下载页面下载。 Go:安装1.14及以上版本的Go,安装包请至Go官方下载页面下载。 C#:安装6.0及以上版本的.NET,安装包请至.NET官方下载页面下载。
  • 数据源说明 假设数据库里面有一张表,表结构如下建表语句所示: create table sp_test(id number,name varchar2(50),sal number); 往表中并插入数据,数据集如下表所示: 表1 sp_test表数据集 ID NAME SAL 1 ZHANG 5000 2 LI 6000 3 ZHAO 7000 4 WANG 8000 在Oracle数据库中调用存储过程,根据name查询sal的值。 create or replace procedure APICTEST.sb_test(nname in varchar, nsal out number) asbeginselect sal into nsal from sp_test where name = nname;end;
共99354条