MySQL: @variable vs. variable.뭐가 다른데?
또 다른 질문에서는 다음 두 가지 사이에 차이가 있다고 누군가가 말했습니다.
@variable
또, 다음과 같이 합니다.
variable
MySQL에 있습니다.또한 MSSQL에는 배치 범위가 있고 MySQL에는 세션 범위가 있는 방법도 언급했습니다.누가 이것에 대해 좀 더 자세히 설명해 줄 수 있나요?
MySQL에는 사용자 정의 변수의 개념이 있습니다.
이 변수들은 느슨하게 입력된 변수이며 세션 내 어딘가에서 초기화될 수 있으며 세션이 끝날 때까지 값을 유지합니다.
에는 이이음음음음음음음음음 they they they they .@
써주세요.@var
하려면 을 합니다.SET
「 」 「 」 、 「 」
SET @var = 1
SELECT @var2 := 2
MySQL에서 저장 프로시저를 개발할 때 입력 파라미터를 전달하고 로컬 변수를 선언할 수 있습니다.
DELIMITER //
CREATE PROCEDURE prc_test (var INT)
BEGIN
DECLARE var2 INT;
SET var2 = 1;
SELECT var2;
END;
//
DELIMITER ;
이러한 변수에는 프리픽스가 부가되지 않습니다.
정의 변수가 입니다.NULL
세션 고유 변수가 아닌 경우 프로시저가 호출될 때마다 다음과 같이 처리됩니다.
CREATE PROCEDURE prc_test ()
BEGIN
DECLARE var2 INT DEFAULT 1;
SET var2 = var2 + 1;
SET @var2 = @var2 + 1;
SELECT var2, @var2;
END;
SET @var2 = 1;
CALL prc_test();
var2 @var2
--- ---
2 2
CALL prc_test();
var2 @var2
--- ---
2 3
CALL prc_test();
var2 @var2
--- ---
2 4
바와 같이, '우리'는 '우리'입니다.var2
되고 (변수)는 호출될 때마다 다시 초기화됩니다.@var2
을 사용하다
(MySQL에는 사용자 정의 변수 외에도 다음과 같은 "시스템 변수"가 미리 정의되어 있습니다.@@global.port
'변수'와 '를 사용합니다.@@session.sql_mode
; 이러한 "변수"는 세션 고유의 사용자 정의 변수와는 관련이 없습니다.)
、 MySQL ( MySQL 。@variable
는 사용자 정의 변수를 나타냅니다.직접 정의할 수 있습니다.
SET @a = 'test';
SELECT @a;
된 프로그램variable
를 사용하지 않습니다.@
는 시스템 변수이며 사용자가 직접 정의할 수 없습니다.
이 변수의 범위는 세션 전체입니다.즉, 데이터베이스와의 연결이 존재하는 동안 변수를 계속 사용할 수 있습니다.
이는 현재 쿼리 배치(저장된 프로시저, 스크립트 등)에서만 변수를 사용할 수 있는 MSQL과는 대조적입니다.같은 세션의 다른 배치에서는 사용할 수 없습니다.
은 MSSQL을 해야 합니다.DECLIFYd는 DECLIFyd를 사용합니다.@Variable
구문)DECLARE @TEXT VARCHAR(25) = 'text'
MS 는, 를 필요로 이 순서의 에서도 선언을 허가합니다 DECLARE」 「MySQL」 「MySQL」 「MySQL」 「MySQL」 「MySQL」 「MySQL」.
라인은 , 「 라인」을 하고 있는 것 느낌이 .set = @variable
MySQL my my my my my 。범위 및 변수는 범위 경계를 넘어 존재하지 않습니다.가 JavaScript를 사용하지 않고 합니다.var
가 되어 치 않은 덮어쓰기를 만듭니다.
이 MySQL을 허락해주셨으면 .DECLARE @Variable
저장 프로시저 내의 다양한 블록 수준에서 사용할 수 있습니다. 점에 주의:@
(사인만 하면)그@
기호 접두사는 변수 이름과 테이블 열 이름을 구분하는 데 도움이 됩니다. 이치프리픽스를 할 수 "v" 프리픽스는 "l_" 입니다.@
은 변수 하지 않고 할 수 한 방법입니다.sign은 데이터를 압축하지 않고 추출할 수 있습니다.
MySQL은 스토어드 프로시저에 처음 등장하며 첫 번째 버전에서도 좋은 성과를 거두고 있습니다.여기서 그들이 어떤 형태를 취하고 있는지, 그리고 언어의 서버측 측면이 성숙하는 것을 보는 것은 즐거울 것입니다.
원칙적으로 Stored Procedures 내에서 UserDefinedVariables(@로 권장)를 사용합니다.이렇게 하면 특히 두 개 이상의 저장 프로시저에서 이러한 변수가 필요할 때 생활이 더 쉬워집니다.하나의 저장 프로시저 내에서만 변수가 필요한 경우 시스템 변수(@ 추가 없음)를 사용합니다.
@Xybo: Stored Procedures에서 @variable을 사용하는 것이 왜 위험한지 이해할 수 없습니다.조금 더 쉽게 (신입생으로서) 'scope'와 'boundary'를 설명해 주시겠습니까?
@variable
는 Java, Python 등으로 작성된 응용 프로그램에서 스토어드 프로시저를 호출할 때 매우 유용합니다.첫 번째 콜에서 변수 값이 생성되어 후속 콜의 기능에서 필요한 경우가 있습니다.
PL/SQL(Oracle) 관련 참고 사항
이 장점은 Oracle PL/SQL에서 확인할 수 있습니다.이러한 변수의 범위는 3가지입니다.
- 함수가 종료될 때 스코프가 종료되는 함수 변수.
- 범위가 세션이고 가시성이 패키지인 모든 함수 외부에 정의된 패키지 본문 변수입니다.
- 변수가 세션이고 가시성이 전역인 패키지 변수입니다.
PL/SQL에서의 경험
저는 완전한 코드를 PL/SQL로 쓰는 아키텍처를 개발했습니다.이들은 Java로 작성된 미들웨어에서 호출됩니다.미들웨어에는 두 가지 종류가 있습니다.클라이언트로부터의 콜에 대응하기 위한 것으로, Java 로도 기술되어 있습니다.다른 하나는 브라우저로부터의 콜에 대응합니다.클라이언트 패실리티는 100% JavaScript로 구현됩니다.PL/SQL에서 애플리케이션을 쓰기 위해 HTML 및 JavaScript 대신 명령어세트가 사용됩니다.
PL/SQL에 기재된 코드를 다른 데이터베이스에 이식할 수 있는 같은 설비를 찾고 있습니다.가장 가까운 곳은 Postgres입니다.그러나 모든 변수에는 함수 범위가 있습니다.
@
이 정도는 이다.@
MySQL 에있다다 。Oracle 데이터베이스 판매에 영향을 미칠 수 있으므로 Oracle은 PL/SQL to MySQL 스토어드 프로시저에서 사용할 수 있는 동일한 기능을 구축하지 않을 것입니다.
언급URL : https://stackoverflow.com/questions/1009954/mysql-variable-vs-variable-whats-the-difference
'itsource' 카테고리의 다른 글
pip 설치가 실패하고 "연결 오류: [SSL: CERTIFICATE_VERIFY_FAILED] 인증서 검증 실패(_ssl.c:598)"가 표시됨 (0) | 2022.10.05 |
---|---|
PHP를 사용하여 MySQL 데이터베이스에 IP 주소 저장 (0) | 2022.10.05 |
포커스를 받을 때 텍스트 상자의 모든 내용 선택(Vanilla JS 또는 jQuery) (0) | 2022.10.05 |
SQL Chemy ORM을 사용한 벌크 인서트 (0) | 2022.10.05 |
SQL - INNODB vs MyISAM vs 아리아 (0) | 2022.10.05 |