我正在研究一种解决方案,其中几个SQL脚本和PL/SQL脚本通过SQL*Plus以一批方式一起运行。
我在脚本中的相关点声明SET ECHO OFF;和SET ECHO ON;,以便输出相关代码。
当前的输出如下所示:
SQL> DECLARE
2 ct number := 0;
3 ctChanges number := 0;
4
5 BEGIN
6 select count(*) into ct from ...
7 (...rest of code block...)
"some specific status
我正在尝试让SQL*Plus在其输出文件中写入进度,该输出文件应该在某种程度上看起来像一个报告,即没有应用程序固有的不需要的格式。特别是,我想去掉似乎每一行都以其开头的SQL>。这是我的shell脚本,它调用sqlplus:
#!/usr/bin/ksh
$ORABIN/sqlplus $ORADBUSER/$ORADBPASSWD@$ORADB<<!!>./orclTest.log
SELECT 'IN sqlplus' AS MESSAGE1 FROM dual;
VARIABLE rowCnt number;
BEGIN
SELECT CO
我被要求将现有SQLPLUS脚本的一部分更改为shell脚本,以允许更多选项。
以下是原始SQLPLUS脚本提示的内容:
SPOOL results.txt;
WHENEVER OSERROR EXIT 9;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
PROMPT
PROMPT This script upgrades the database to the most recent version of eV8.0.
SET VERIFY OFF;
SET SERVEROUTPUT ON;
ACCEPT continue_flag CHAR PROMPT
我使用假脱机程序输出查询,这些都是我使用的选项
set timing off
set trims on
set trimo on
set linesize 10000
set wrap off
set pagesize 0
set heading on
set verify off
set feedback off
set sqlprompt
set flush off
set echo off
set time on
在使用时
select X1|| CHR(9) || X2|| CHR(9) || ...
当我使用to_clob时,我一直在使用result of string conc
我有几个sql脚本需要通过SQL*Plus运行。这些脚本以不同用户的身份使用connect user_01/pass_01@db_01连接几次。现在,脚本每次执行这样的连接时,都会确认与connected的连接是否成功。这很让人分心,我想把它关掉。
我可以用一个
set termout off
connect user_01/pass_01@db_01
set termout on
我的问题有没有更好的解决方案?
注意,在脚本开始时永久set termout off没有帮助,因为我需要知道命令是否没有成功运行。
我有一个从命令行执行的sql文件,它工作得很好。
sqlplus username/password@DBInstance @filename.sql
我的filename.sql看上去是这样的:
set colsep ';'
set echo off
set feedback off
set sqlprompt ''
set trimspool on
set headsep off
set termout off
--set define off
set serveroutput on
set verify off
set autoprint off
set
我正在做以下练习:
问题67
表:产品
+
(product_id,change_date)是该表的主键。此表的每一行表示某些产品的价格在某一日期更改为新价格。编写SQL查询,查找2019-08-16年度所有产品的价格.假设任何更改前所有产品的价格为10。查询结果格式如下所示:
+(1)+
成果表:
+
这是其他人提出的解决办法:
-- Solution
with t1 as (
select a.product_id, new_price
from(
Select product_id, max(change_date) as date
from products
where change
我正在使用以下代码使用SQL*Plus进行导出:
Set echo off
Set verify off
Set feedback off
Set heading off
Set termout on
Set pages 50000
Set linesize 1000
Set newpage none
Set colsep ","
spool Z:\ff\ss.csv
Select Client_ID, Cust_ID from cust;
spool off;
exit;
我得到了正确的输出,但是它没有最好的格式。
SQL> Select Client_ID, Cu
我有一个有17列的表。根据这个表,我需要从远程数据库生成一个本地CSV文件。我定义了一些set语句,只显示一次列名,不显示sql横幅、行计数和其他一些语句。
"my sql connection"<<EOF>> test_file.csv
SET TAB OFF ECHO OFF FEEDBACK OFF LINESIZE 5000 SQLPROMPT '' TRIMSPOOL OFF HEADING OFF UNDERLINE OFF PAGESIZE 0
select * from my_table where ROWNUM &
登录到sqlplus时,为什么它总是在linux中打印用户名?
$ sqlplus
SQL*Plus: Release 11.2.0.4.0 Production on Fri Apr 7 06:32:57 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter user-name: scott
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
很多时候,我只需要快速连接到Oracle DB,SQLPLUS就可以处理这项工作。
我想,当人们开始使用甲骨文时,他们被告知要做的第一件事就是安装Toad或SQLDeveloper。即使这样,如果您正在执行一些简单的查询,有时您也不想等待这些工具加载。
我有一个在启动shell时运行的脚本,这样我就可以获得更好的体验:
SET pagesize 2000
SET LONG 10000
SET linesize 1000
COLUMN last_name format a20
COLUMN total format 999,999,999
SET feedback ON
alter sessio
我在AIX上使用ksh。创建一个unix脚本,该脚本生成Created替换视图.还有格兰特。语句,这些语句放在一个.txt文件中。现在,我需要在Oracle中执行文件中的内容(大约有300个视图创建和授予语句),我需要记录即将执行的sql语句和Oracle的反馈信息,不管是否创建了视图。我的节选是
sqlplus -s username/password@servername <<EOF
SET ECHO ON;
SET NEWPAGE 0;
SET PAGESIZE 0;
SET LINESIZE 200;
SET LONG 10000000;
SET TRIMSPOOL ON;
在sql server中,存储过程sp_rename允许重命名表、数据库、列等。假设我有表SomeTable和存储过程,使用此表:
create procedure get_temp
as
begin
select *
from SomeTable
end
如果我执行以下代码:
sp_rename 'SomeTable', 'SomeTable2'
我的桌子改名了。但是它的旧名称“SomeTable”保留在过程中,如果我试图执行过程,我就失败了。是否有一种在存储过程和函数中重命名表(列、数据库等)的方法?
我试图获取存储过程返回的任何内容,包括列名和它们的类型。我可以用表来完成这个任务,但是我无法为存储过程找到它。我尝试了sp_columns,但只设法使它在表中工作。
我也尝试过这样的方法,但是我不确定我应该和什么相匹配。
SELECT *
FROM SYS.PROCEDURES (NOLOCK) AS AA
INNER JOIN SYS.SCHEMAS (NOLOCK) AS BB ON (AA.schema_id = BB.schema_id)
INNER JOIN SYS.COLUMNS (NOLOCK) AS CC ON (AA.object_id = CC.object_id)
例如