简单使用MySQL的存储过程
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 简单使用MySQL的存储过程 MySQL5.0版本引进了存储过程的概念。存储过程可以提高执行效率,更容易维护。 在没有存储过程(procedure)概念之前,通常的业务逻辑sql代码有时很长,它们一般被嵌入在宿主
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入
简单使用MySQL的存储过程
MySQL5.0版本引进了存储过程的概念。存储过程可以提高执行效率,更容易维护。
在没有存储过程(procedure)概念之前,通常的业务逻辑sql代码有时很长,它们一般被嵌入在宿主语言(比如Java)中,非常不便于维护,而有了存储过程,它们被定义在数据库端,并且进行了预编译。而且业务逻辑SQL代码无需在网络中传输,减轻了网络负担。可以说存储过程的优点大于它的缺点。
下面实现一个简单的加法存储过程。
[sql]
mysql> delimiter $
mysql> create procedure pr_add (a int , b int)
-> begin
-> declare c int;
-> if a is null then
-> set a = 0;
-> end if;
-> if b is null then
-> set b = 0;
-> end if;
-> set c = a + b;
-> select c as sum;
-> end;
-> $
在命令行模式中运行存储过程:
[sql]
mysql> delimiter ;
mysql> set @a = 10;
Query OK, 0 rows affected (0.00 sec)
mysql> set @b = 20;
Query OK, 0 rows affected (0.00 sec)
mysql> call pr_add(@a,@b);
+------+
| sum |
+------+
| 30 |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
在客户端执行存储过程:
[java]
public class ProcedureTest {
private static final String DB_URL = "jdbc:mysql://localhost:3306/zjut";
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String USER = "root";
private static final String PASSWORD = "XXXXX";
private static String sql = "call pr_add(?,?)";
public static void main(String[] args) {
try {
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setInt(1,10);
cstmt.setInt(2, 20);
ResultSet rs = cstmt.executeQuery();
while(rs.next()) {
System.out.println(rs.getInt("sum"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
关键代码是:
[java]
CallableStatement cstmt = conn.prepareCall("call pr_add(?,?)");
cstmt.setInt(1,10);
cstmt.setInt(2, 20);
ResultSet rs = cstmt.executeQuery();
输出:
30
原理:首先创建SQL字符串,即 "call pr_add(?,?)" ,调用存储过程用call命令,call命令后跟存储过程名字,两个问号是占位符。
使用Connection对象创建CallableStatement对象,即 conn.prepareCall(sql); 该方法接受一个字符串,代表一个sql语句。
再用CallableStatement对象的executeQuery()执行SQL语句,返回一个ResultSet对象。
利用ResultSet对象遍历得到的数据。

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제









Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Gate.io는 사용자가 설치 패키지를 다운로드하여 장치에 설치하여 사용할 수있는 인기있는 cryptocurrency 교환입니다. 설치 패키지를 얻는 단계는 다음과 같습니다. Gate.io의 공식 웹 사이트를 방문하고 "다운로드"를 클릭하고 해당 운영 체제 (Windows, Mac 또는 Linux)를 선택하고 컴퓨터에 설치 패키지를 다운로드하십시오. 설치 중에 항 바이러스 소프트웨어 또는 방화벽을 일시적으로 비활성화하여 원활한 설치를 보장하는 것이 좋습니다. 완료 후 사용자는 GATE.IO 계정을 만들려면 사용을 시작해야합니다.

Bitget은 스팟 거래, 계약 거래 및 파생 상품을 포함한 다양한 거래 서비스를 제공하는 Cryptocurrency 교환입니다. 2018 년에 설립 된이 교환은 싱가포르에 본사를두고 있으며 사용자에게 안전하고 안정적인 거래 플랫폼을 제공하기 위해 노력하고 있습니다. Bitget은 BTC/USDT, ETH/USDT 및 XRP/USDT를 포함한 다양한 거래 쌍을 제공합니다. 또한 Exchange는 보안 및 유동성으로 유명하며 프리미엄 주문 유형, 레버리지 거래 및 24/7 고객 지원과 같은 다양한 기능을 제공합니다.

시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.

Docker 환경을 사용할 때 Docker 환경에 Extensions를 설치하기 위해 PECL을 사용하여 오류의 원인 및 솔루션. 종종 일부 두통이 발생합니다 ...

PHP가 MySQL에 연결 한 후 페이지가 비어 있고 Die () 함수가 실패한 이유가 있습니다. PHP와 MySQL 데이터베이스 간의 연결을 배울 때는 종종 혼란스러운 것들이 발생합니다 ...

PHP ...

많은 웹 사이트 개발자는 램프 아키텍처에서 Node.js 또는 Python 서비스를 통합하는 문제에 직면 해 있습니다. 기존 램프 (Linux Apache MySQL PHP) 아키텍처 웹 사이트 요구 사항 ...
