当前位置:首页 » 编程语言 » plsql变量绑定

plsql变量绑定

发布时间: 2022-06-18 21:06:18

1. 动态sql中的重复占位符如何与绑定变量进行

BEGIN calc_stats(:x, :x, :y, :x); END 是一个PL/SQL 代码段,而非 insert into t6 (a,b,c) values (:x,:y,:x) 这样的DML,标准SQL语句。

在EXECUTE IMMEDIATE 中,利用USING语句绑定变量时,Oracle遵循针对PL/SQL存储过程使用占位符名称匹配的原则,而针对SQL语句则采用占位符位置匹配的原则。

PL/SQL 用户指南与参考 中的 例子如下:

动态SQL语句中的占位符与USING子句中的绑定参数是位置关联的,而不是名称关联。所以,如果在SQL语句中同样的占位符出现两次或多次,那么,它的每次出现都必须与一个USING子句中的绑定参数相关联。例如下面的动态字符串:

sql_stmt := 'INSERT INTO payroll VALUES (:x, :x, :y, :x)';

我们可以为动态字符串编写对应的USING子句:

EXECUTE IMMEDIATE sql_stmt USING a, a, b, a;

但 是,动态PL/SQL块中只有唯一的占位符才与USING子句中的绑定参数按位置对应。所以,如果一个占位符在PL/SQL块中出现两次或多次,那么所有 这样相同的占位符都只与USING语句中的一个绑定参数相对应。比如下面的例子,第一个占位符(x)与第一个绑定参数(a)关联,第二个占位符(y)与第 二个绑定参数(b)关联。

DECLARE
a NUMBER := 4;
b NUMBER := 7;
BEGIN
plsql_block := 'BEGIN calc_stats(:x, :x, :y, :x); END';

EXECUTE IMMEDIATE plsql_block
USING a, b;
...

END;
---------------------------------------------------------------------------------------------
CREATE TABLE T1 (N1 NUMBER, N2 NUMBER,N3 NUMBER,N4 NUMBER);

BEGIN
EXECUTE IMMEDIATE 'INSERT INTO T1(N1,N2,N3,N4) VALUES (:N1,:N2,:N2,:N1)' USING 1,2;
END;
/

*
ERROR at line 1:
ORA-01008: not all variables bound
ORA-06512: at line 2

BEGIN
EXECUTE IMMEDIATE 'BEGIN INSERT INTO T1(N1,N2,N3,N4) VALUES (:N1,:N2,:N2,:N1); END;' USING 1,2;
END;
/

PL/SQL procere successfully completed.

SELECT * FROM T1;

N1 N2 N3 N4
---------- ---------- ---------- ----------
1 2 2 1

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

2. plsql中声明变量时可以指定哪种类型的约束

主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空。

唯一约束(Unique constraint):要求该列唯一,允许为空,但只能出现一个空值。

检查约束(Check constraint):某列取值范围限制,格式限制等,如有关年龄、邮箱(必须有@)的约束。

默认约束(Default constraint):某列的默认值,如在数据库里有一项数据很多重复,可以设为默认值。

外键约束(Foreign Key constraint):用于在两个表之间建立关系,需要指定引用主表的哪一列。


3. plsql配置环境变量

本方法是通过使用ORACLE官方提供的精简版客户端,即绿色免安装的客户端。
下载地址(此处提供的是官方各版本下载地址):
Windows
32位系统中使用的客户端下载地址
其他系统环境中使用的客户端下载地址
Instant
client的版本很多:主要是Basic和Basic
Lite。
Basic版本包括了所有的支持运行OCI、OCCI、JDBC、JDBC-OCI的文件,支持多种语言。
Basic
Lite是Basic版本的精简版,只包括了英文的错误描述,也只支持Unicode、ASCII和欧洲字符集。
因此,如果数据库服务器是中文字符集(如
SIMPLIFIED
CHINESE_CHINA.ZHS16GBK),则必须下载Basic版本。

4. 在plsql中,使用绑定变量的方法除了动态sql外,还有别的方式吗

plsql里面直接使用变量也是使用了绑定变量的。
比如在存储过程中使用
select empno from emp where empno=p_empno ;
其实使用的也是绑定变量。
在内存中是类似这样的格式:
SELECT EMPNO FROM EMP WHERE EMPNO=:B1

当然这也和数据库参数plsql_optimize_level,但是一般都不会关注。

5. plsql里的ref是什么意思

这是oracle的绑定变量。 using后面的l_dept绑定到:1, 和下面是一个意思: execute immediate 'select dname, loc from dept where deptno = '|| l_dept 建议用绑定变量的方法做开发

6. 在PLSQLdeveloper上面执行下列代码时报错 ORA-01008:并非所有变量都已绑定,新手求解,

你倒是说说plsql里是啥错啊,就这么贴一堆代码,谁也没心思看啊,也没个注释说明啥的,也不弄语法高亮设置

7. PLSQL中动态SQL关于绑定变量使用

'create sequence seq_test increment by 1 start with :ID '; 这一句, 应该写start with :1 吧.

热点内容
自带ftp服务器好用吗 发布:2025-02-06 15:26:11 浏览:109
win7访问xp局域网 发布:2025-02-06 15:17:07 浏览:524
均线差算法 发布:2025-02-06 15:13:22 浏览:459
androidbrowser 发布:2025-02-06 15:09:49 浏览:622
勇敢的心ftp 发布:2025-02-06 15:09:03 浏览:327
php日志分析 发布:2025-02-06 15:08:19 浏览:874
36脚本大厅作者 发布:2025-02-06 14:55:53 浏览:409
买电脑配送服务器吗 发布:2025-02-06 14:54:58 浏览:243
服务器怎么删除资源 发布:2025-02-06 14:36:14 浏览:672
安卓如何设置桌面返回键 发布:2025-02-06 13:58:15 浏览:49