数据库 Proc编程二

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h"

//连接数据库
/*
EXEC SQL CONNECT {:user IDENTIFIED BY :oldpswd | :usr_psw }
     [[AT { dbname | :host_variable }] USING :connect_string ]
        [ { ALTER AUTHORIZATION :newpswd | IN { SYSDBA | SYSOPER } MODE }];
        */

EXEC SQL BEGIN DECLARE SECTION;
    char * serverid="scott/[email protected]";
    char user[32];
    char passwd[32];
    char sid[32];
EXEC SQL END DECLARE SECTION;

//user 用户名
//passwd 密码
//sid 数据库ID

void main()
{
    int ret=0;
    //C语言中使用宿主变量
    //printf("serverid=%s\r\n",serverid);

    printf("user:");
    scanf("%s",user);

    printf("passwd:");
    scanf("%s",passwd);

    printf("sid:");
    scanf("%s",sid);

    //连接数据库方式一--在嵌入SQL编程中使用变量需要加:
    EXEC SQL connect:user IDENTIFIED BY :passwd USING :sid ;
    //连接数据库方式二
    //EXEC SQL connect:serverid;
    if(sqlca.sqlcode!=0)
    {
        ret=sqlca.sqlcode;
        printf("connect err :%d",ret);
        system("pause");
    }else
    {
        printf("connect ok!\r\n");
        //提交事务断开连接
        EXEC SQL commit release;
        printf("Oracle closed !\r\n");
        system("pause");
    }
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h"

EXEC SQL BEGIN DECLARE SECTION;
    char *user="scott";
    char *passwd="123456";
    char *sid="orcl";
    char *linkf="link1";//通过宿主变量 指定名字
    char *linkt="link2";
EXEC SQL END DECLARE SECTION;

//user 用户名
//passwd 密码
//sid 数据库ID

void main()
{
    int ret=0;
    //连接数据库方式三 --多个用户连接多个数据库
    EXEC SQL connect:user IDENTIFIED BY :passwd AT :linkf USING :sid ;
    if(sqlca.sqlcode!=0)
    {
        ret=sqlca.sqlcode;
        printf("connect1 err :%d",ret);
        system("pause");
    }else
    {
        printf("connect1 ok!\r\n");
        //提交事务断开连接
        EXEC SQL commit release;
        printf("Oracle closed !\r\n");
        //system("pause");
    }
    EXEC SQL connect:user IDENTIFIED BY :passwd AT :linkt USING :sid ;
    if(sqlca.sqlcode!=0)
    {
        ret=sqlca.sqlcode;
        printf("connect2 err :%d",ret);
        system("pause");
    }else
    {
        printf("connect2 ok!\r\n");
        //提交事务断开连接
        EXEC SQL commit release;
        printf("Oracle closed !\r\n");
        //system("pause");
    }
    system("pause");
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h"

//这里我用的是一个用户,其实也可以是多个用户
EXEC SQL BEGIN DECLARE SECTION;
    char *user="scott";
    char *passwd="123456";
    char *sid="orcl";
EXEC SQL END DECLARE SECTION;

void main()
{
    int ret=0;
    //和第三种方式不同,由oracle自动分配
    EXEC SQL DECLARE linkf DATABASE;
    EXEC SQL DECLARE linkt DATABASE;
    //连接数据库方式四 --注意linkf不再是宿主变量,所以不需要加:
    EXEC SQL connect:user IDENTIFIED BY :passwd AT linkf USING :sid ;
    if(sqlca.sqlcode!=0)
    {
        ret=sqlca.sqlcode;
        printf("connect1 err :%d",ret);
        system("pause");
    }else
    {
        printf("connect1 ok!\r\n");
        //提交事务断开连接
        EXEC SQL commit release;
        printf("Oracle closed !\r\n");
        //system("pause");
    }
    EXEC SQL connect:user IDENTIFIED BY :passwd AT linkt USING :sid ;
    if(sqlca.sqlcode!=0)
    {
        ret=sqlca.sqlcode;
        printf("connect2 err :%d",ret);
        system("pause");
    }else
    {
        printf("connect2 ok!\r\n");
        //提交事务断开连接
        EXEC SQL commit release;
        printf("Oracle closed !\r\n");
        //system("pause");
    }
    system("pause");
}
时间: 2024-10-11 16:53:34

数据库 Proc编程二的相关文章

数据库 proc编程九

第一种动态sql EXEC SQL EXECUTE IMMEDIATE :psql; 1.仅适用于非select语句 2.嵌入SQL语句中不能包含输入宿主变量 void main() { EXEC SQL WHENEVER SQLERROR DO sqlerr(); EXEC SQL connect:serverid ; printf("connect ok!\r\n"); char buf[100]={0}; while(1) { memset(buf,0,sizeof(buf));

数据库 proc编程六

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include "sqlca.h" //指示变量:用来对宿主变量做说明 //指示变量作输入:当值-1,表示宿主变量是空值 //指示变量做输出:当值-1,表示返回的变量是空值 //语法格式:宿主变量 [indicator] 指示变量 其中indicator关键字可加可不加

winform网络编程(二)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

安卓第八天笔记--网络编程二

安卓第八天笔记--网络编程二 1.网络图片查看器 /** * 网络图片查看器 * 1.获取输入的URL地址,判断是否为空 * 2.建立子线程,获取URl对象new URL(path) * 3.打开连接获取HttpURLConnection conn = (HttpURLConnection) url.openConnection(); * 4.设置连接超时时间conn.setConnectionTimeOut(5000)毫秒 * 5.设置请求方式setRequestMethod * GET或者P

Oracle Proc编程性能优化经验

Proc 是Oracle提供的一种数据库操作的AP.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一些Proc操作存在效率低下的情况,本文介绍一些Proc一些编译经验,希望能给大家提供参考. 下面以一个简单需求进行举例说明: 要求把DB1里面一张数据表tbl_hch_test的数据导出到DB2的同名表. 最快的方法当然是使用oracle的数据泵工具进行压缩导出再导入,但expdp/impdp对数据库

第八章、数据库后台编程技术

第八章.数据库后台编程技术 内容提要: 1.掌握存储过程的定义与使用 2.掌握用户定义函数的创建与使用 3.掌握触发器的定义与使用 4.掌握游标的定义与使用 第一节 存储过程 1.基本概念 使用T-SQL语言编写代码时,有两种方式存储和执行代码: (1)在客户端存储代码,通过客户端程序或SQL命令向DBMS发出操作请求,由DBMS将结果返回给用户程序. (2)以子程序的形式将程序模块存储在数据库中,供有权限的用户通过调用反复执行. 存储过程:即存储在数据库中供所有用户程序调用的子程序. 存储过程

Linux平台上SQLite数据库教程(二)——C语言API介绍

Linux平台上SQLite数据库教程(二)--C语言API介绍 前言:本文将介绍几个基本的SQLite3数据库的C语言API接口,主要用到两个文件:sqlite3.c.sqlite3.h.源码地址:https://github.com/AnSwErYWJ/SQLite. 打开数据库 1.原型: int sqlite3_open( const char* filename, /* 数据库文件名, 必须为 UTF-8 格式 */ sqlite3** ppDB /* 输出: SQLite 数据库句柄

PL/SQL 编程(二)

1    For循环 语法:begin for i in reverse 1..10 loop insert into users values(i,'奥巴马'): end loop: end; 注意:循环变量 i 是隐含增加的,所以无法看到 2    goto语句 goto 语句用于跳转到特定的位置去执行语句.由于goto语句会减少程序的可读性,所以一般情况下 不建议使用goto语句 3    null语句 null语句不会执行任何操作,但是可以增加程序的可读性 4    创建返回值是一个结果

Win32 Windows编程 二

一.第一个窗口程序 1  入口函数 WinMain 2  窗口处理函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc( hWnd, nMsg, wParam, lParam ); } 当窗口处理消息事件时 调用该函数 LRESULT CALLBACK WndProc( HWND hWnd, UINT nMsg, WPARAM wParam,