请问啥是SQL的DECLARE语句?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问啥是SQL的DECLARE语句?相关的知识,希望对你有一定的参考价值。

书上在有这样一句话不是很明白“存储设备上的数据库是用SQL存取的,数据库和主语言程序间信息的传递是通过共享变量实现的。这些共享变量要用SQL的DECLARE语句说明... ...”
请问什么是SQL的DECLARE语句?

使用一个DECLARE语句在一个批处理或超过100个进程的主体中声明变量,并使用SET或SELECT语句分配变量。游标变量度可以用这个语句声明,也可以与其他版本的游标相关语句一起使用。所有权重变量在声明后初始化为NULL。

定义语句的方法:

1、先定义一个数组,该数组是一些数字,复制可以对应到id列中的数据表中。

2.关键是将数组的内容转换为SQL语句中的字符串。

3.然后将转换后的字符串连接到SQL查询语句中的in语句。

4、不要直接使用代码来执行数据库,首先要使用dump语句来SQL输出。

5.运行该页面,您将看到最终的SQL语句,如下图所示。

6.然后可以在数据库客户端工具中执行SQL语句。

7.执行之后,可以声明数组的使用。

参考技术A mysql declare语句是在复合语句中声明变量的指令。

(1)Example with two DECLARE statements
两个DECLARE语句的实例
CREATE PROCEDURE p8 ()
BEGIN
DECLARE a INT;
DECLARE b INT;
SET a = 5;
SET b = 5;
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1 >= b;
END; // /* I won't CALL this */

在过程中定义的变量并不是真正的定义,你只是在BEGIN/END块内定义了而已(译注:也就是形参)。注意这些变量和会话变量不一样,不能使用修饰符@你必须清楚的在BEGIN/END块中声明变量和它们的类型。变量一旦声明,你就能在任何能使用会话变量、文字、列名的地方使用。

(2)Example with no DEFAULT clause and SET statement
没有默认子句和设定语句的例子
CREATE PROCEDURE p9 ()
BEGIN
DECLARE a INT /* there is no DEFAULT clause */;
DECLARE b INT /* there is no DEFAULT clause */;
SET a = 5; /* there is a SET statement */
SET b = 5; /* there is a SET statement */
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1 >= b;
END; // /* I won't CALL this */

有很多初始化变量的方法。如果没有默认的子句,那么变量的初始值为NULL。你可以在任何时候使用SET语句给变量赋值。

(3)Example with DEFAULT clause
含有DEFAULT子句的例子
CREATE PROCEDURE p10 ()
BEGIN
DECLARE a, b INT DEFAULT 5;
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1 >= b;
END; //

我们在这里做了一些改变,但是结果还是一样的。在这里使用了DEFAULT子句来设定初始值,这就不需要把DECLARE和SET语句的实现分开了。 

(4)Example of CALL
调用的例子
mysql> CALL p10() //
+--------+
| s1 * a |
+--------+
| 25 |
| 25 |
+--------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

结果显示了过程能正常工作

(5) Scope
作用域
CREATE PROCEDURE p11 ()
BEGIN
DECLARE x1 CHAR(5) DEFAULT 'outer';
BEGIN
DECLARE x1 CHAR(5) DEFAULT 'inner';
SELECT x1;
END;
SELECT x1;
END; //
参考技术B 变量是在批处理或过程的主体中用 DECLARE 语句声明的,并用 SET 或 SELECT 语句赋值。游标变量可使用此语句声明,并可用于其他与游标相关的语句。所有变量在声明后均初始化为 NULL。

在sql里按F1自己看吧本回答被提问者和网友采纳
参考技术C 在sql语句中添加变量。
DECLARE @local_variable (Transact-SQL)

变量是在批处理或过程的主体中用 DECLARE 语句声明的,并用 SET 或 SELECT 语句赋值。游标变量可使用此语句声明,并可用于其他与游标相关的语句。除非在声明中提供值,否则声明之后所有变量将初始化为 NULL。

声明时需要指定变量的类型,可以使用set和select对变量进行赋值,在sql语句中就可以使用@local_variable来调用变量

例如:declare @id int

set @id=2

select id
参考技术D 申明变量用的,在存储过程中可以常看到

MS SQL语句declare游标的求助

参考技术A (从联机帮助拷贝)
游标
关系数据库中的操作会对整个行集产生影响。由
SELECT
语句返回的行集包括所有满足该语句
WHERE
子句中条件的行。由语句所返回的这一完整的行集被称为结果集。应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。这些应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的结果集扩展。
游标通过以下方式扩展结果处理:
允许定位在结果集的特定行。
从结果集的当前位置检索一行或多行。
支持对结果集中当前位置的行进行数据修改。
为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。
提供脚本、存储过程和触发器中使用的访问结果集中的数据的
Transact-SQL
语句。

以上是关于请问啥是SQL的DECLARE语句?的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句中的declare 是啥意思,具体怎么用啊

MS SQL语句declare游标的求助

关于数字金额转换大写金额,sql语句

SQL如何将一个表里的不同条件查询结果拼接显示

SQL中啥时候要用declare声明变量

Spring JDBC 在运行 SQL 脚本时无法处理 DECLARE 语句