Oracle PROC编程:数据类型与Pro*C/C++示例

需积分: 9 1 下载量 152 浏览量 更新于2024-08-15 收藏 531KB PPT 举报
Oracle PROC编程是一种在过程化编程语言(如C/C++、FORTRAN等)中嵌入SQL语句来开发应用程序的技术。它旨在利用C/C++等高效语言的优势,使其能够方便地与数据库交互,提供了一种高效的数据存取、更新以及错误处理方式。 1. **数据类型**: Oracle PROC支持多种数据类型,包括: - `char`:单字符,用于存储单个字符数据。 - `char[n]`:定长字符数组,可以存储固定长度的字符串,例如`char[20]`表示最多20个字符的字符串。 - `int`、`short`、`long`:整数类型,分别代表不同范围的整数。 - `float`:单精度浮点数,用于存储小数值。 - `double`:双精度浮点数,提供了更大的精度。 - `VARCHAR[n]`:变长字符串,与SQL中的VARCHAR类似,可以存储可变长度的文本。 2. **宿主变量与指示变量**: 在PROC编程中,宿主变量是来自宿主语言(如C/C++)的变量,它们在嵌入的SQL语句中使用。指示变量(如`sqlca`)则用于存放SQL执行结果的错误信息。 3. **嵌入SQL语句**:PROC允许在宿主语言中执行SQL查询,通过`EXECSQL`语句将SQL代码融入到程序中。例如,`EXECSQLCONNECT`用于建立数据库连接,`EXECSQLselect...into`用于执行SQL查询并将结果赋值给宿主变量。 4. **连接数据库**:在`main()`函数中,通过`EXECSQLCONNECT`调用,使用提供的用户名和密码连接到Oracle数据库。`EXECSQLSELECT...`用于指定SQL查询,并通过`into`关键字将结果存储在宿主变量`last_name`中。 5. **错误处理**:在Oracle PROC中,错误处理非常重要。如`WHENEVER SQLERROR`关键字用于捕获SQL执行期间的错误,然后执行相应的错误处理逻辑。`sqlerror()`函数在这里用于显示错误信息并可能回滚事务。 6. **动态SQL**:虽然示例代码没有明确提及,但Oracle PROC支持动态SQL,即根据运行时条件构造和执行SQL语句,这在需要灵活性和复杂查询的情况下非常有用。 7. **程序编写步骤**: - 定义宿主变量,如用户名、密码等。 - 使用`EXECSQLBEGIN...EXECSQLEND`结构包含SQL代码。 - 在主程序中,确保在SQL错误发生时有适当的错误处理机制。 - 结合宿主语言功能,如字符串操作,构建SQL查询并执行。 Oracle PROC编程结合了宿主语言的高效性能和数据库的丰富功能,适用于需要高效数据库操作和良好错误管理的应用场景。通过理解这些核心概念,开发者可以更有效地利用PROC进行数据处理和应用开发。

[root@his ~]# kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.25.0 --apiserver-advertise-address=192.168.8.109 [init] Using Kubernetes version: v1.25.0 [preflight] Running pre-flight checks [WARNING Hostname]: hostname "his" could not be reached [WARNING Hostname]: hostname "his": lookup his on 192.168.8.254:53: no such host error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: E0714 18:14:51.757340 11481 remote_runtime.go:616] "Status from runtime service failed" err="rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial unix /var/run/containerd/containerd.sock: connect: no such file or directory\"" time="2023-07-14T18:14:51+08:00" level=fatal msg="getting status of runtime: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial unix /var/run/containerd/containerd.sock: connect: no such file or directory\"" , error: exit status 1 [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1 [ERROR KubeletVersion]: the kubelet version is higher than the control plane version. This is not a supported version skew and may lead to a malfunctional cluster. Kubelet version: "1.27.3" Control plane version: "1.25.0" [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher

2023-07-15 上传