五种典型语句:

1.create table temp(cola int);

2.delete from emp where empno:=7788;

3.delete from empwhere empno=:no;

4.select ename from emp where empno=:no;

5 select :a,:b from :c where empno=:no;

对于动态SQL一功能有1、2,其实这个时候动态SQL还没有发挥它应该有的作用,这个时候功能赶不上静态SQL

主要是通过EXEC SQL EXECUTE IMMEDIATE :sql_statement来实现动态sql就是根据用户的输入来确定SQL语句

但由于SQL语句中没有变量所以处理很简单

给出程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
void connect();
void sql_err();

void dynamic_sqlone();

void main()
{
EXEC SQL WHENEVER SQLERROR DO sql_err();
connect();
cursor();
EXEC SQL COMMIT RELEASE;
}

void sql_err()
{
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,,sqlca.sqlerrm.sqlerrmc);
}

void connect()/*数据库连接-本地数据库,不添加server*/
{
EXEC SQL BEGIN DECLARE SECTION;
char username[20],password[20];
EXEC SQL END DECLARE SECTION;
printf("input username: ");
gets(username);
printf("input password: ");
gets(password);
EXEC SQL CONNECT :username IDENTIFIED BY :password;
}

void dynamic_sqlone()
{
EXEC SQL BEGIN DECLARE SECTION;
char sql_statement[100];
char control;
EXEC SQL END DECLARE SECTION;
for(;;)
{
printf("input the sqlstatement u want to execute:\n");
gets(sql_statement);
EXEC SQL EXECUTE IMMEDIATE :sql_statement;
printf("continue? (Y/N): ");
scanf("%c",&control);
getchar();
if(control=='N'||control=='n') break;
}
}
执行

Pro*C动态SQL总结1

Pro*C动态SQL总结1

Pro*C动态SQL总结1

本例中,在程序没有结束前查询表,表中并没有数据,因为还没有写进去,所以这个时候查询为空,当程序退出后可以查看。

注意动态SQL一是不能查询的!!!

相关文章:

  • 2021-11-19
  • 2021-11-19
  • 2021-06-09
  • 2022-12-23
  • 2022-01-16
  • 2022-02-13
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2021-11-19
相关资源
相似解决方案