mysql替代符号_SQL语言之和符号(&)替换

本文详细介绍了如何在SQL语句中使用和字符(&)进行变量替换,包括通过DEFINE命令定义变量、直接输入变量值以及使用双和字符(&&)定义会话变量的方法。还提到了SET DEFINE命令控制替换功能的开启和关闭,以及VERIFY命令用于验证替换变量的效果。此外,解释了如何处理包含和字符的字面值,并提供了示例展示变量替换的实践操作。
摘要由CSDN通过智能技术生成

可以使用和符号(&)来替换SQL语句中的元素,包括所有文本、子句、子子句。即通过和符号来指定变量。SQL语句中最基本、最普遍的元素替换形式是单个和符号(&)替换。和字符是用来在语句中指定替换变量的符号,它在变量名之前,并且它们之间没有空格。

Oracle使用以下两种方式来确定变量的值:

检查用户会话中是否使用DEFINE定义了该变量。

如果没有定义变量,在SQL进程运行时,由用户指定(即输入一个变量值)。

如果变量要替换字符或者日期值,需要将字面值包含在单引号内。

示例1:

SQL> select employee_id,last_name,salary from employees

2  where last_name='&LASTNAME';

Enter value for lastname: King

old   2: where last_name='&LASTNAME'

new   2: where last_name='King'

EMPLOYEE_ID LAST_NAME                     SALARY

----------- ------------------------- ----------

156 King                           10000

100 King                           24000

注:如不在&LASTNAME外添加'',则需要在输入King时添加'',否则会报错。

示例2:

SQL> define LASTNAME=King;

SQL> select employee_id,last_name,salary from employees

2  where last_name='&LASTNAME';

old   2: where last_name='&LASTNAME'

new   2: where last_name='King'

EMPLOYEE_ID LAST_NAME                     SALARY

----------- ------------------------- ----------

156 King                           10000

100 King                           24000

可以使用和字符替换列名,和字符、日期字符字面值不一样,当指定或者通过&替换变量指定时,列名引用都不需要单引号。

和字符可以替换SQL语句的任何元素,但至少第一个单词是静态的,如:SELECT $rest_of_statement。

oracle不会检验相同替换变量输入的字面值。

使用双和符号(&&)定义的变量,oracle服务器会将其作为会话变量,在后续引用中不再提示替换该变量值。在会话期间或在显式解除定义前,此变量一直有效。

使用UNDEFINE可以显式解除&&定义的会话变量值。

DEFINE命令有两个作用:

可以用来检索SQL会话中当前定义的所有变量列表

可以定义会话期间一个或者多个变量的值

使用SET DEFINE ON/OFF可以打开或关闭和字符(&)的替换功能。当输入的字面值中包括和符号(&)时,可在之前使用set define off来关闭字符(&)的替换功能。

VERIFY命令专用于SQL*PLUS,可以控制提交的替换变量是否显示到屏幕上,以便验证替换是否正确。即示例中的:

old   2: where last_name='&LASTNAME'

new   2: where last_name='King'

可以使用SET VERIFY ON/OFF来打开或关闭此功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值