sqlplus and sh scripts (to_char command))


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users sqlplus and sh scripts (to_char command))
# 1  
Old 09-05-2001
sqlplus and sh scripts (to_char command))

Hi evrybody!!!!

I have a problem with this shell script

INICIO=$(sqlplus -s user/user@db1 << END | awk '{printf $1}'
set head off
set feed off
select to_char(min(create_dt) , 'HH24') from table_name where trunc(create_dt)=trunc(sysdate-2);
END)

I want to recover, in INICIO, the min time from a group of records but the problem is I am using the to_char command with (') symbol, as you see in the example 'HH24'. With Oracle it works OK, directly by sqlplus. But with sh scripts it doesn't. I tried with '' double single quoted or " double quoted and \' but the problem continues, could somebody have an advice to solve the problem?

Thanks

José


# 2  
Old 09-05-2001
I made a couple of changes because I'd
also like you to try this version just
to see what awk prints out.

#!/usr/bin/ksh
sqlplus -s user/user@db1 << END | awk '{printf $1}'
set head off
set feed off
select to_char(min(create_dt) , 'HH24') from table_name where
trunc(create_dt)=trunc(sysdate-2);
/
END

exit 0

I added the "/" to terminate the script.
I'm assuming your trying to get the output
of awk into the variable INICIO. For this, it may
be better to use the "read" command. I'll have
to think about that some more.
# 3  
Old 09-06-2001

If it's a problem with the ' in a shell script, have you tried escaping them with a \ in front of them? Also, could the numbers of embedded ('s in the script be a problem also? I haven't tried this, but how about:

sql_job () {
sqlplus -s user/user@db1 << END
set head off
set feed off
select to_char(min(create_dt) , 'HH24') from table_name where
trunc(create_dt)=trunc(sysdate-2);
/
END
}

INICIO=`sql_job | awk '{print $1}'`

echo $INICIO


This is just a guess... like I said, I didn't try this script, but this is how I would have tried it...

HTH
--
LF

# 4  
Old 09-06-2001
more thoughts...

I thought about it a bit more and
here is what I'm thinking...

INICIO=$(sqlplus -s user/user@db1 << END
set head off
set feed off
set serveroutput on
declare mydate char(whatever_the_length);
begin
select to_char(min(create_dt) , 'HH24') from table_name where
trunc(create_dt)=trunc(sysdate-2);
dbms_output.put(mydate);
end;
/
END)

...this should simply write the result
of the select to stdout which should then
be assigned to INICIO. Note that I added
a few things to the sql and this gets rid
of the " | awk " redirection stuff.
# 5  
Old 09-06-2001
corrections...

I was thinking too fast this morning
without coffee...

See corrections...

INICIO=$(sqlplus -s user/user@db1 << EOF
set head off
set feed off
set serveroutput on
declare mydate char(whatever_the_length);
begin
select to_char(min(create_dt) , 'HH24') into mydate from table_name where
trunc(create_dt)=trunc(sysdate-2);
dbms_output.put(mydate);
end;
/
EOF)

...I forgot the "into mydate" in the select.
Also, I changed END to EOF since "END" is a
SQL keyword it's probably best not to use
it (even though the script terminator "/"
should have precluded any misinterpretation).
Sorry about that Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX and Linux Applications

Problem on SQLplus command ""bash: sqlplus: command not found""

Hi all, i face an error related to my server ""it's running server"" when i use sqlplus command $ sqlplus bash: sqlplus: command not found the data base is up and running i just need to access the sqlplus to import the dump file as a daily backup. i already check the directory... (4 Replies)
Discussion started by: clerck
4 Replies

2. Shell Programming and Scripting

Can any one explain this sqlplus command?

Hi , i am new to unix i need a small clarification regarding this sqlplus -s $USER_NAME/$PASSWD@$ORA_SID<< EOF >> SQL_CONN_LOG.log In the above command what is the meaning of <<EOF>> Thanks, krishna. (2 Replies)
Discussion started by: rams_krishna
2 Replies

3. Red Hat

TNS Timeout Error when connecting to SQLPLUS through scripts only

Hi, I am facing a strange issue when connecting to SQLPLUS via a shell scripts. I am using Linux 2.6.18-274.18.1 and gbash shell. When I connect to SQLPLUS through scripts then it throws TNS Time Out error ""sometimes"" and connects successfully other times.This is only happening when... (9 Replies)
Discussion started by: aashish.sharma8
9 Replies

4. UNIX and Linux Applications

how to execute multiple .sql scripts from within a shell script using sqlplus

using sqlplus I want to execute a .sql script that has dbms_output statments in rhe script. I want to write the dbms_output statements from .sql file to a log file. is this possible. thanks any help would be appreciated :wall: (1 Reply)
Discussion started by: TRS80
1 Replies

5. Ubuntu

sqlplus: command not found

I installed Oracle 10.2.1.0 in Ubuntu 10.10..my installation was well,i could even open isqlplus( http://ubuntu.ubuntu-domain:5560/isqlplus/workspace.uix ) and execute some queries..But,back in terminal when i try to login to sqlplus i am getting error (20 Replies)
Discussion started by: sandy0594
20 Replies

6. Shell Programming and Scripting

list all scripts in crontab which contains the string "sqlplus"

Hi folks I use a Solaris 10 box with Bash shell. I have here a script (it works!) to list all scripts in crontab which contains the string "sqlplus": for i in $(ls `crontab -l | grep -v '#' | awk '{ print $6 }' | grep -v '^$'`); do grep -l 'sqlplus' "$i"; done Is there a more elegant... (1 Reply)
Discussion started by: slashdotweenie
1 Replies

7. HP-UX

sqlplus: command not found

hi, i need bash shell script run on the crontab(Unix tru64). i have write my shell. it's using sqlplus command and connect to oracle db. execute cron job when i have error messege: "sqlplus: command not found" have you any suggestion? (4 Replies)
Discussion started by: Tlg13team
4 Replies

8. UNIX for Dummies Questions & Answers

editing sqlplus id@passwd in multiple scripts, users and directories

hi all, i was given by my supervisor a task to search for scripts which contain oracle sqlplus i.e "myusername/mypasswd @myDB" in every /home/userfolder, which are, all the scripts made by different user. I've done some find command to search string for sqlplus, but it may up too long to respond.... (8 Replies)
Discussion started by: Helmi
8 Replies

9. Shell Programming and Scripting

SQLplus in Shell scripts

How to execute a query which is stored in a variable. Say for example : v_source_query=”select count(*) from emp” v_source_value=`sqlplus -S "$DATABASE_LOGIN" << EOF | tr '\n' ' ' set feed off set pagesize 0 set head... (12 Replies)
Discussion started by: trupti_d
12 Replies

10. Shell Programming and Scripting

Use sqlplus command

Can someone tell me how to execute sqlplus command. I`m Executing: sqlplus user/pasw @/report/output/new/PlatformOut_Cdrs.sql the error is: SQL*Plus: Release 9.2.0.5.0 - Production on Wed Aug 9 15:37:44 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ERROR:... (3 Replies)
Discussion started by: Nel
3 Replies
Login or Register to Ask a Question