m.e*_*son 8 oracle variables toad plsql
尽管花了一个小时研究我似乎无法弄清楚如何正确定义变量然后在SQL中使用它.
这是我到目前为止所做的:
DECLARE startDate DATE := to_date('03/11/2011', 'dd/mm/yyyy');
其中我得到了答复:
ORA-06550:第1行,第63列:PLS-00103:遇到以下某种情况时遇到符号"文件结束":
begin function package pragma procedure子类型使用form current cursor
详情:DECLARE startDate DATE:= to_date('03/11/2011','dd/mm/yyyy'); 第1行错误ORA-06550:第1行第63列:PLS-00103:遇到以下某种情况时遇到符号"文件结束":
begin function package pragma procedure子类型使用form current cursor
我很想知道如何做这么简单的任务!
Xav*_*ica 14
您的变量声明是正确的.
该DECLARE关键字用于定义PL/SQL块(其主体由BEGIN和分隔END;)中作用域的变量.你想如何使用这个变量?
以下PL/SQL对我来说很好:
DECLARE
startDate DATE := to_date('03/11/2011', 'dd/mm/yyyy');
reccount INTEGER;
BEGIN
SELECT count(*) INTO reccount
FROM my_table tab
WHERE tab.somedate < startDate;
dbms_output.put_line(reccount);
END;
Run Code Online (Sandbox Code Playgroud)
您还可以使用该DEFINE语句来使用简单的字符串替换变量.它们适用于SQL/PLUS或TOAD等客户端.
DEFINE start_date = "to_date('03/11/2011', 'dd/mm/yyyy')"
SELECT COUNT(*) from my_table tab where tab.some_date < &start_date;
Run Code Online (Sandbox Code Playgroud)
要完成您在Toad中尝试的操作,您根本不需要声明变量.只需在变量前面加上冒号,Toad会在执行查询时提示您输入变量的值.例如:
select * from all_tables where owner = :this_is_a_variable;
Run Code Online (Sandbox Code Playgroud)
如果最初不起作用,请右键单击编辑器中的任意位置,并确保选中"提示替换变量".
如果你真的希望这样做与SQL Server处理变量的方式类似(或者你希望能够在SQL*Plus中做同样的事情),你可以按如下方式编写它:
var this_is_a_variable varchar2(30);
exec :this_is_a_variable := 'YOUR_SCHEMA_NAME';
print this_is_a_variable;
select * from all_tables where owner = :this_is_a_variable;
Run Code Online (Sandbox Code Playgroud)
但是,要在Toad中使用它,您需要通过"Execute as script"而不是典型的"Execute语句"命令来运行它.