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,否则可能会出错。
另外,虚机团上产品团购,超级便宜