问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

esql中怎么动态调用存储过程?

发布网友 发布时间:2022-04-22 08:34

我来回答

2个回答

懂视网 时间:2022-05-03 03:24

E-SQL

1.学会用嵌入式SQL对数据库进行增、删、改、查操作。

2.多行查询使用游标和STATE

3.SQL事物操作

4. 集群和模式

 

 

1:以SQL嵌入C语言为例说明实现嵌入式SQL的方法

1.1声明:通信的变量就是SQL与C语言进行数据传递

 C语言和SQL语言之间是通过共享变量来进行数据的传送。

     (1)EXEC SQL BEGIN DECLARE SECTION;

            char name[20];

            Int   age;

            char  sex[4];

        EXEC SQL END DECLARE SECTION;

(2)声明使用共享变量

   嵌入式SQL在执行的时候需要在前面添加EXEC SQL

   插入语句:inset into table_name(,,,)values(:xx,:ss)

插入语句的格式为:

     EXEC SQL INSERT

     INTO Student (id,  name)

     VALUES (:s_id, :s_name);  :后面的变量需要在开始的时候进行声明。

 

1.2、执行SQL

     插入语句:

     插入语句的格式为:

     EXEC SQL INSERT

     INTO Student (StudentNo,   StudentName)

     VALUES (:sno, :sname);

 

   修改语句:

   修改语句的格式为:

   update table_name set age = 12 where Id = 12

   EXEC SQL UPDATE Student

  SET(name=:s_name, age=:s_age)  WHERE id=:s_id;

 

  删除语句:

  删除语句的格式为:

  delete from table_name where id = s_id

  EXEC SQL DELETE

  FROM student

  WHERE id= ( select id FROM Student  WHERE name=:s_name );

 

  查询语句:

     当查询的结果只有一个元组时,

     EXEC SQL

     SELECT status,date INTO :qstatus,:qdate

     FROM Student  WHERE id=:s_id;

 

2:游标的使用

  (1)  查询多个数据的时候需要使用游标进行查询

  (2)  经常配合循环使用来获取多个数据

2.1:游标的声明:

  EXEC SQL DECLARE <游标名> CURSOR FOR

  SELECT …FROM…WHERE…;

  示例:ECEX SQL DECLARE RC_QRY  CURSOR FOR SELECT

  l  From STUDENT WHERE ID =:s_id

2.2:打开游标

  在打开游标时,执行与游标相联系的SQL查询语句。此时游标处于打开状态,游标指向第一个元组之前。

  EXEC SQL OPEN <游标名>

2.3移动游标

  EXEC SQL FETCH <游标名> INTO <变量表> 移动赋值给共享变量

2.4关闭游标

  EXEC SQL CLOSE <游标名>;

 

3:   SQL中的事务

    数据库操作的某些组合需要以原子的方式完成,也就是说,它们或者都做,或者都不做。

   一个通常的解决方式是让对数据库的所有改变在本地的工作区完成,并且只有当所有的工作完成以后才把这种改变提交给数据库。

   例如:银行转账 A卡转B卡 A卡扣钱后同时要更新B卡的数量当且两个数据都更新成功之后才能提交数据。这就是事务,只是例子实际也许不这么操作。

   EXEC SQL ROLLBACK; //数据失败

   EXEC SQL COMMIT ; //数据提交

4: SQL集群

    模式(Schema):是指数据库模式,而不是关系模式,是表、视图、域等数据库元素的聚集。模式是整个体系结构的基本单位。

  Create table st.trichsuvn //表示在st这个模式下创建trichsuvn这个表.

    创建模式:CREATE SCHEMA StudentSchema

    切换模式:     SET SCHEMA StudentSchema;

    目录(Catalog):是模式的聚集,即每个目录都有一个或多个模式。在一个目录中模式的名字必须是唯一的。

在目录中建立模式类似于在模式中建立表或视图之类的模式元素。可以设想用如下语句建立学生目录:

    CREATE CATALOG StudentCatalog

    SET CATALOG StudentCatalog;

    群集(Cluster):是目录的聚集。每个用户都有相关的群集,也就是该用户可以访问的所有目录的集合。群集是数据库可以操作的最大范围,因此,对于特定的用户,群集就是“数据库”。

E-SQL

标签:方式   c语言   where   示例   声明   char   获取   val   最大   

热心网友 时间:2022-05-03 00:32

嵌入式SQL程序的VC+SQL server 2000实现的环境配置

嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:1、环境初始化;2、预编译;3、编译;4、连接;5、运行。下面就其中重要的的操作方法给以详细说明。
1、环境初始化
(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把devtools.rar解压到SQLServer的系统日录下(即文件夹devtools中的所有文件);如果操作系统安装在C盘,则SQL Server的系统目录是C:\Program Files\Microsoft SQL Server。(或 在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL语言准备必要的头文件和库文件。)
( 2)初始化Visual C++ 6.0编译器环境。在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
(3)初始化SQL Server的预编译环境。在命令行方式下运行文件:\Devtools\samples\esqlc\setenv.bat。
( 4) VC++6.0环境配置。具体配置分为如下三步[:
①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。将SQL server自带的用于数据库开发的头文件包含到工程环境中。
②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。将开发用到的包包含到工程中。
③project->Settings->Link->Object/Library Moles,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。

2、预编译
C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下。若SQL Server数据库采用的是默任安装方式,则需要把binn.rar的内容拷贝到指定目录下。

Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序.实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器.
预编译程序nsqlprep的常用语法为:
nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password
其中ESQL_File是要预编译的嵌入式SQL程序;/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程;/DB server_name.database_name指明要连接的服务器以及数据库名称;/PASS login.password给出登录名及相应的口令.

下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)

#include<stdio.h>
void main()
{
EXEC SQL BEGIN DECLARE SECTION;
char first_name[40];
char last_name[]="White";
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO hushaobo.pubs
USER sa.1982;
EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name;
EXEC SQL DISCONNECT ALL;
printf("first name: %s \n",first_name);
}

在命令行下运行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982
则生成demo.c,将该文件添加到VC工程中编译即可。

3、编译,连接与运行
在VC++6.0中创建一个 "WIN32 Console Application"的Proiect,然后将预编译生成的c文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。 Visual C++ 6.0进行编译连接时需要用到动态链接库SQLakw32.d11与SQLaiw32.d11;尽管这两个文件已经随同binn.rar被拷贝到SQLServer安装目录的MSSQL\Binn文件夹下,但仍然需要把它们的路径加到系统路径变量中,以使得程序运行时能找到它们,具体添加方法如下:
方法1:把这两个文件拷贝到操作系统目录下的system32子目录中。
方法2:我的电脑->属性->高级->环境变量->path->编辑,在变量值中加入路径值;新路径与已有路径间用;间隔。

注意调适程序时,文件名中不要包含cursor,否则可能会出错。
另外,虚机团上产品团购,超级便宜
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
arrive in和arrive at 有什么区别? 磁力泵为什么可空转? 为什么不让衬氟塑料磁力泵空转?怎样提升设备稳定性? 工业软管泵 塑料磁力泵为什么不能空转 求推荐男主和女配在一起的小说? 《红衣天下》txt全集下载 检测公司检测哪些 检测公司是怎么样的 检测公司属于什么企业 爱情树是什么样子的? 爱情树要多少能量才能完全长大? SQL2005 存储过程调用存储过程,求实例 为什么抖音停止视频后再继续就不行了? 在sqlserver存储过程如何通过条件来判断是否调用另... 爱情树是什么树?它真实的存在过吗? 抖音还能“抖”多久? sqlserver调用存储过程返回的结果集,怎么插入到临... 为什么继快手之后抖音可以火起来 linux 脚本里面如何调用sqlserver存储过程 我把抖音卸载了。然后重新下一个。我的手机号登录... 怎么从sqlserver的存储过程获得返回的数据 什么APP被封之后,抖音继位? 和男友种的爱情树怎么起名呢? java调用sqlserver存储过程问题 node.js调用sqlserver的存储过程? SqlServer带参存储过程的调用 sqlserver存储过程怎么调试 去哪能学到正宗的杂粮煎饼薄脆做法 你认为小孩子可以看《羊脂球》吗? 华为p40锁屏时间位置怎么移动其他位置? sqlserver数据库 中写存储过程有什么好处:? 什么是爱情树 怎样让sqlserver后台定时执行某个存储过程 sql server 中 一个要输入参数和输出参数的存储过程。 华为手机怎么把锁屏上下方的时间移到上方 抖音视频发布之后还能一直点开看吗 昆山哪里可以打暑期工啊? 抖音热门了之后还要继续发作品吗 海德小区怎么样?好不好?值不值得买? 昆山哪里有招兼职临时工一天一结 在渝北区实验三小划片区里,没户口,能上吗 抖音退出后刚发出的作品平台还会继续推送吗 在昆山 有没有什么兼职可以做呢?跪求大家的帮助!... 想知道:金华市 从义乌站到东阳汽车西站怎么坐公交? 你好 就是想问一下 我的身份证绑定了另外一个抖音... 本人在昆山工作,平时工作时间八九个小时想找份兼... 成都碧桂园海德公园属于哪个街道? 一旦刷上抖音就难下来了,怎么办? 昆山哪里有晚上兼职的工作