USING关键字的使用

[复制链接]
查看11 | 回复7 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
请问大家,下面程序中的using是什么意思啊?using后面的变量好像从头到底都没用上啊,为什么还要using?

CREATE OR REPLACE PROCEDURE get_title_or_text (
2 title_like_in IN VARCHAR2
3,return_title_in IN BOOLEAN
4,joke_count_out OUT PLS_INTEGER
5,jokes_out OUT SYS_REFCURSOR
6 )
7 IS
8 c_from_whereVARCHAR2 (100) := ' FROM jokes WHERE title LIKE :your_title';
9 l_colname all_tab_columns.column_name%TYPE := 'TEXT';
10l_query
VARCHAR2 (32767);
11 BEGIN
12 IF return_title_in
13 THEN
14l_colname := 'TITLE';
15 END IF;
16
17
l_query := 'SELECT ' || l_colname || c_from_where;
18
19 OPEN jokes_out FOR l_query USING title_like_in;
20
21 EXECUTE IMMEDIATE 'SELECT COUNT(*)' || c_from_where
22
INTO joke_count_out
23
USING title_like_in;
24 END get_title_or_text;
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
c_from_where 中有这样的字符串:WHERE title LIKE :your_title
其中 :your_title 表示一个绑定变量,需要在执行时提供具体的值。
USING title_like_in 就是来提供这个绑定值的。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
那像上面这样就已经绑定好了吗?your_title根据什么去拿title_like_in的值啊,好像也没有传参数名之类的东西,绑定多个的话不是就乱了吗?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
按冒号出现的位置和次序,还有数量,决定了有多少个绑定变量、变量合法的类型;然后USING后就跟多少个对应类型的值。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
USING 是给绑定变量传递具体的值.
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
哦,是这样啊,谢谢老大,还有个问题就是下面代码说是声明一个嵌套表来保存游标变量的数据, jokes_tt怎么可以做类型啊,jokes_tt()又是什么意思啊
TYPE jokes_tt IS TABLE OF jokes.text%TYPE;
l_joke_array jokes_tt:= jokes_tt ();
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
TYPE jokes_tt IS ...
就是定义了名为 jokes_tt 的类型。不要说jokes_tt可以做类型名,随便起个符合ORACLE命名规范的什么名字都可以啊。
jokes_tt()是这个类型的构造函数,意思就是生成这个类型的一个实例。
你应该多看看ORACLE的PL/SQL语法。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
恩,谢谢楼上,plsql语法还没系统的看过,偶尔网上看到了个帖子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行