데이터 베이스 MySQL 튜토리얼 嵌入式SQL与主语言的通信_MySQL

嵌入式SQL与主语言的通信_MySQL

Jun 01, 2016 pm 01:51 PM
언어

将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句:
 (1)SQL语句:描述性的面向集合的语句;负责操纵数据库
 (2)高级语言语句:过程性的面向记录的语句;负责控制程序流程。
工作单元之间的通信方式:
 1. SQL通信区:向主语言传递SQL语句的执行状态信息;主语言能够据此控制程序流程
 2. 主变量:
  (1)主语言向SQL语句提供参数。
  (2)将SQL语句查询数据库的结果交主语言进一步处理。
 3. 游标:解决集合性操作语言与过程性操作语言的不匹配。
一、SQL通信区
  SQLCA: SQL Communication Area。SQLCA是一个数据结构
  SQLCA的用途:
  SQL语句执行后,DBMS反馈给应用程序信息
   (1)描述系统当前工作状态
   (2)描述运行环境
  这些信息将送到SQL通信区SQLCA中,应用程序从SQLCA中取出这些状态信息,据此
  决定接下来执行的语句。
  SQLCA的使用方法:
   用EXEC SQL INCLUDE SQLCA加以定义。SQLCA中有一个存放每次执行SQL语句后返回
   代码的变量SQLCODE。如果SQLCODE等于预定义的量SUCCESS,则表示SQL语句成功,
   否则表示出错;应用程序每执行完一条SQL 语句之后都应该测试一下SQLCODE的值,
   以了解该SQL语句执行情况并做相应处理。
  例:在执行删除语句DELETE后,不同的执行情况,SQLCA中有不同的信息:
        违反数据保护规则,操作拒绝
        没有满足条件的行,一行也没有删除
        成功删除,并有删除的行数
        无条件删除警告信息
        由于各种原因,执行出错
二、主变量
  嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据。在SQL语句中使用的
  主语言程序变量简称为主变量(Host Variable)。
  主变量的类型:
   输入主变量:由应用程序对其赋值,SQL语句引用。
   输出主变量:由SQL语句赋值或设置状态信息,返回给应用程序。
  一个主变量有可能既是输入主变量又是输出主变量。
  一个主变量可以附带一个指示变量(Indicator Variable)
  指示变量一个整型变量,用来“指示”所指主变量的值或条件。
  指示变量的用途:输入主变量可以利用指示变量赋空值;输出主变量可以利用指示
  变量检测出是否空值,值是否被截断
  在SQL语句中使用主变量和指示变量的方法
   (1) 说明主变量和指示变量
         BEGIN DECLARE SECTION
         ......... 
         ......... (说明主变量和指示变量)
         .........
         END DECLARE SECTION
   
 (2) 使用主变量
    说明之后的主变量可以在SQL语句中任何一个能够使用表达式的地方出现
    为了与数据库对象名(表名、视图名、列名等)区别,SQL语句中的主变
    量名前要加冒号(:)作为标志。
  (3) 使用指示变量
    指示变量前也必须加冒号标志
    必须紧跟在所指主变量之后
    在SQL语句之外(主语言语句中)使用主变量和指示变量的方法:
    可以直接引用,不必加冒号。
三、游标(cursor)
  游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有
  一个名字,用户可以用游标逐一获取记录,并赋给主变量,交由主语言进一步处理。
  为什么要使用游标: 
   SQL语言与主语言具有不同数据处理方式
   SQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录
  主语言是面向记录的,一组主变量一次只能存放一条记录,仅使用主变量并不能完全
  满足SQL语句向应用程序输出数据的要求。
  嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式下面用个程序详解

#include
#include


EXEC SQL BEGIN DECLARE SECTION; /*主变量说明开始*/ 
char deptname[64];
char HSno[64];
char HSname[64]; 
char HSsex[64];
int HSage;
int NEWAGE;
long SQLCODE;
EXEC SQL END DECLARE SECTION;     /*主变量说明结束*/

EXEC SQL INCLUDE sqlca;               /*定义SQL通信区*/

/*************************************************************************/

int main(void)                           /*C语言主程序开始*/
{
int count = 0;
char yn;                              /*变量yn代表yes或no*/
printf("Please choose the department name(CS/MA/IS): "); 
scanf("%s", deptname);                 /*为主变量deptname赋值*/
EXEC SQL CONNECT TO HP-08D6CXF128B/SQL2000 USER sa;         /*连接数据库TEST*/
EXEC SQL DECLARE SX CURSOR FOR   /*定义游标*/
SELECT Sno, Sname, Ssex, Sage   /*SX对应语句的执行结果*/
FROM Student
WHERE SDept = :deptname;
EXEC SQL OPEN SX;        /*打开游标SX便指向查询结果的第一行*/

for ( ; ; )                       /*用循环结构逐条处理结果集中的记录*/

EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage;
      /*推进游标,将当前数据放入主变量*/
if (sqlca->sqlcode != 0)     /* sqlcode != 0,表示操作不成功*/
break;                /*利用SQLCA中的状态信息决定何时退出循环*/
if(count++ == 0)             /*如果是第一行的话,先打出行头*/
printf("/n%-10s %-20s %-10s %-10s/n", "Sno", "Sname", "Ssex", "Sage");
printf("%-10s %-20s %-10s %-10d/n", HSno, HSname, HSsex, HSage); 
     /*打印查询结果*/
printf("UPDATE AGE(y/n)?"); /*询问用户是否要更新该学生的年龄*/
do{                     
    scanf("%c",&yn);
}
while(yn != 'N' && yn != 'n' && yn != 'Y' && yn != 'y');
if (yn == 'y' || yn == 'Y')                 /*如果选择更新操作*/
{
   printf("INPUT NEW AGE:");
   scanf("%d",&NEWAGE);          /*用户输入新年龄到主变量中*/
   EXEC SQL UPDATE Student            /*嵌入式SQL*/
   SET Sage = :NEWAGE
   WHERE CURRENT OF SX ;
}                 /*对当前游标指向的学生年龄进行更新*/
}

EXEC SQL CLOSE SX;           /*关闭游标SX不再和查询结果对应*/
EXEC SQL COMMIT WORK;                           /*提交更新*/
EXEC SQL DISCONNECT TEST;                  /*断开数据库连接*/
}

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11에서 원치 않는 표시 언어를 완전히 제거하는 방법 Windows 11에서 원치 않는 표시 언어를 완전히 제거하는 방법 Sep 24, 2023 pm 04:25 PM

동일한 설정으로 너무 오랫동안 작업하거나 다른 사람과 PC를 공유하십시오. 일부 언어 팩이 설치되어 있을 수 있으며 이로 인해 종종 충돌이 발생합니다. 이제 Windows 11에서 원치 않는 표시 언어를 제거해야 할 때입니다. 충돌에 대해 말하면 여러 언어 팩이 있는 경우 실수로 Ctrl+Shift를 누르면 키보드 레이아웃이 변경됩니다. 이를 처리하지 않으면 현재 작업에 방해가 될 수 있습니다. 그럼 바로 방법을 살펴보겠습니다! Windows 11에서 표시 언어를 제거하는 방법은 무엇입니까? 1. 설정에서 +를 눌러 설정 앱을 열고 탐색 창에서 시간 및 언어로 이동한 후 언어 및 지역을 클릭하세요. Windows제거하려는 표시 언어 옆에 있는 줄임표를 클릭하고 팝업 메뉴에서 제거를 선택합니다. "를 클릭하세요.

iPhone에서 언어를 변경하는 3가지 방법 iPhone에서 언어를 변경하는 3가지 방법 Feb 02, 2024 pm 04:12 PM

iPhone이 가장 사용자 친화적인 전자 기기 중 하나라는 사실은 비밀이 아니며, 그 이유 중 하나는 원하는 대로 쉽게 개인화할 수 있다는 것입니다. 개인화에서는 iPhone을 설정할 때 선택한 언어와 다른 언어로 언어를 변경할 수 있습니다. 여러 언어에 익숙하거나 iPhone의 언어 설정이 잘못된 경우 아래 설명에 따라 변경할 수 있습니다. iPhone 언어 변경 방법 [3가지 방법] iOS를 사용하면 사용자가 iPhone에서 선호하는 언어를 자유롭게 전환하여 다양한 요구에 적응할 수 있습니다. Siri와의 상호 작용 언어를 변경하여 음성 지원과의 의사소통을 용이하게 할 수 있습니다. 동시에 로컬 키보드를 사용하면 여러 언어 간을 쉽게 전환하여 입력 효율성을 높일 수 있습니다.

대규모 언어 모델에 포괄적인 시청각 기능을 추가하는 DAMO Academy는 소스 Video-LLaMA를 공개합니다. 대규모 언어 모델에 포괄적인 시청각 기능을 추가하는 DAMO Academy는 소스 Video-LLaMA를 공개합니다. Jun 09, 2023 pm 09:28 PM

비디오는 오늘날의 소셜 미디어와 인터넷 문화에서 점점 더 중요한 역할을 하고 있으며 Douyin, Kuaishou, Bilibili 등은 수억 명의 사용자에게 인기 있는 플랫폼이 되었습니다. 사용자는 자신의 삶의 순간, 창작물, 흥미로운 순간, 기타 콘텐츠를 동영상을 중심으로 공유하여 다른 사람들과 교류하고 소통합니다. 최근에는 대규모 언어 모델이 인상적인 기능을 보여주었습니다. 대형 모델에 "눈"과 "귀"를 장착하여 비디오를 이해하고 사용자와 상호 작용할 수 있습니까? DAMO 아카데미 연구진은 이러한 문제에서 출발하여 종합적인 시청각 기능을 갖춘 대형 모델인 Video-LLaMA를 제안했습니다. Video-LLaMA는 비디오의 비디오 및 오디오 신호를 인식하고 이해할 수 있으며 오디오 및 비디오를 기반으로 일련의 복잡한 작업을 완료하기 위해 사용자가 입력한 지침을 이해할 수 있습니다.

Win10 컴퓨터의 언어를 중국어로 설정하는 방법은 무엇입니까? Win10 컴퓨터의 언어를 중국어로 설정하는 방법은 무엇입니까? Jan 05, 2024 pm 06:51 PM

때로는 컴퓨터 시스템을 설치했는데 시스템이 영어로 되어 있는 경우가 있습니다. 이 경우 컴퓨터 언어를 중국어로 변경해야 합니다. 이제 win10 시스템에서 컴퓨터 언어를 중국어로 변경하는 방법을 알려주세요. . win10에서 컴퓨터 언어를 중국어로 변경하는 방법 1. 컴퓨터를 켜고 왼쪽 하단에 있는 시작 버튼을 클릭합니다. 2. 왼쪽의 설정 옵션을 클릭하세요. 3. 열리는 페이지에서 "시간 및 언어"를 선택합니다. 4. 연 후 왼쪽의 "언어"를 클릭합니다. 5. 여기에서 원하는 컴퓨터 언어를 설정할 수 있습니다.

입만 움직여도 놀 수 있어요! AI를 사용하여 캐릭터를 바꾸고 적을 공격하십시오. 네티즌: '아야카, 카미리류 프로스트 파괴를 사용하세요.' 입만 움직여도 놀 수 있어요! AI를 사용하여 캐릭터를 바꾸고 적을 공격하십시오. 네티즌: '아야카, 카미리류 프로스트 파괴를 사용하세요.' May 13, 2023 pm 07:52 PM

지난 2년 동안 전 세계적으로 인기를 얻은 국내 게임의 경우 Genshin Impact가 확실히 선두를 차지했습니다. 지난 5월 발표된 올해 1분기 모바일게임 매출 조사 보고서에 따르면 '원신임팩트'가 5억6700만달러의 절대우위로 카드드로잉 모바일게임 부문 1위를 굳건히 차지했다고 밝혔다. 불과 18년 만에 모바일 플랫폼의 총 수익이 30억 달러(약 RM130억)를 넘어섰습니다. 이제 Xumi가 개장하기 전 마지막 2.8 섬 버전이 기한이 지났습니다. 오랜 드래프트 기간을 거쳐 마침내 새로운 플롯과 플레이할 영역이 생겼습니다. 그런데 '간황제'가 몇 명인지는 모르겠습니다. 이제 섬을 완전히 탐험하고 나니 다시 풀이 자라기 시작했습니다. 총 182개의 보물 상자 + 1개의 모라 상자(포함되지 않음)가 있습니다. 긴 잔디 기간에 대해 걱정할 필요가 없습니다. 아니, 긴 풀밭에서

에이전트의 경계 탐색: 대규모 언어 모델 에이전트의 성능을 종합적으로 측정하고 개선하기 위한 모듈형 벤치마크 프레임워크인 AgentQuest 에이전트의 경계 탐색: 대규모 언어 모델 에이전트의 성능을 종합적으로 측정하고 개선하기 위한 모듈형 벤치마크 프레임워크인 AgentQuest Apr 11, 2024 pm 08:52 PM

대규모 모델의 지속적인 최적화를 기반으로 하는 LLM 에이전트(이러한 강력한 알고리즘 엔터티)는 복잡한 다단계 추론 작업을 해결할 수 있는 잠재력을 보여주었습니다. 자연어 처리부터 딥 러닝까지 LLM 에이전트는 인간의 언어를 이해하고 생성할 수 있을 뿐만 아니라 전략을 수립하고 다양한 환경에서 작업을 수행하며 심지어 API 호출 및 코딩을 사용하여 빌드까지 할 수 있어 점차 연구 및 산업의 초점이 되고 있습니다. 솔루션. 이러한 맥락에서 AgentQuest 프레임워크의 도입은 LLM 에이전트의 평가 및 발전을 위한 모듈식 벤치마킹 플랫폼을 제공할 뿐만 아니라 연구원에게 이러한 에이전트의 성능을 추적하고 개선할 수 있는 강력한 도구를 제공합니다. 좀 더 세분화된 수준

vivox60pro의 언어 표시를 변경하는 방법 vivox60pro 시스템 언어 설정 방법 vivox60pro의 언어 표시를 변경하는 방법 vivox60pro 시스템 언어 설정 방법 Mar 23, 2024 am 09:06 AM

1. 휴대폰 설정 메뉴에서 [시스템 관리]를 클릭하세요. 2. [언어] 항목을 클릭하세요. 3. 사용하려는 시스템 언어를 선택합니다.

정말 소음이군요! ChatGPT는 언어를 이해합니까? PNAS: 먼저 '이해'가 무엇인지 알아보겠습니다. 정말 소음이군요! ChatGPT는 언어를 이해합니까? PNAS: 먼저 '이해'가 무엇인지 알아보겠습니다. Apr 07, 2023 pm 06:21 PM

기계가 그것에 대해 생각할 수 있는지 묻는 것은 잠수함이 헤엄칠 수 있는지 묻는 것과 같습니다. ——Dijkstra ChatGPT가 출시되기 전부터 업계에서는 이미 대형 모델이 가져오는 변화를 감지하고 있었습니다. 지난해 10월 14일 산타페 연구소의 멜라니 미첼(Melanie Mitchell) 교수와 데이비드 C. 크라카우어(David C. Krakauer) 교수는 "대규모 사전 훈련된 언어 모델이 언어를 이해할 수 있는지 여부"에 대한 모든 측면을 종합적으로 조사한 리뷰를 arXiv에 게재했습니다. "찬성" 및 "반대" 주장과 이러한 주장에서 파생된 광범위한 지능 과학의 주요 문제를 설명합니다. 논문 링크: https://arxiv.o

See all articles