Replacement variables SQL Plus x PLSQL x APEX
How Can I use replacement variables SQL Plus, integrating with APEX ,PLSQL?
This isn't going very well is it?
Perhaps it has something to do with a lack of knowledge of the english language, that you don't explain your case more, but I'll try to rephrase your question:
You would like to call a query in SQL*PLUS from an Apex application?
Then my answer would be simple: you can't.
But my return question would be: why would you want that?
You can also run your query in your Apex application and show the result on a page. Why is there a need to run it in SQL*PLUS?
Similar Messages
-
Hello,
Could anybody gives me a clue about the following?
Thanks for any help.
Claude
A did this:
CREATE OR REPLACE TYPE "A" AS OBJECT (v_a NUMBER) NOT FINAL;
CREATE OR REPLACE TYPE "B" UNDER A (v_b NUMBER);
CREATE TABLE "TA" OF "A";
INSERT INTO TA VALUES(A(1));
...some other similar inserts...
INSERT INTO TA VALUES(B(1,2));
Till now all is ok...but after I try to launch the following simple command:
SELECT REF(p) FROM TA p;
If I launch it from the SQL*PLUS the result is OK ->
REF(P)
000028020981708518CF81BCD2E040007F01011CDB81717581F4E5C8A9E040007F010109B1010000
F40000
000028020981708518CF82BCD2E040007F01011CDB81717581F4E5C8A9E040007F010109B1010000
F40001
000028020981708518CF83BCD2E040007F01011CDB81717581F4E5C8A9E040007F010109B1010000
F40002
If I launch it from theHTML IGU the APEX result is KO ->
ORA-00932: inconsistent datatypes: expected NUMBER got REF CLASIE.A
CF -> [Print screen IGU APEX|http://www.virgox.net/ref.png]
My system:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Productionthe problem is reproducoble on apex.oracle.com (current version 4.0.0.00.46)
Who can say that it is BUG or FEATURE?
...meanwhile have to add check ACCOUNT_LOCKED = 'N' to custom auth function... -
Hi,
I am getting this error message in my ASP.Net apps (namespace Oracle.DataAccess.Client) and any app that tries to use the Oracle Provider for OLE DB.
Error:
ORA-12154: TNS:could not resolve the connect identifier specified
Here is what I do know:
- My ORACLE_HOME is set to C:\oracle\product\11.1.0\client_1\
- My path has C:\oracle\product\11.1.0\client_1\network\admin;C:\oracle\product\11.1.0\client_1\bin;
- I installed Oracle Client 11g, previously 10g was working but one of the devs wanted to upgrade
- I can connect using sqlplus user/pass@tnsname
- I can test tns entries successfully in Net Manager
Here is what I don't know:
- When using OLE connections, why does Oracle Provider for OLE DB not pick up on the environment variables - sql plus seems to, that's why it works.
- In ASP.Net, why does the connection object from Oracle.DataAccess.Client not pick up the correct environment variables?
- How do the Oracle drivers pick up the location of the TNS names?
Thanks,
Michael
Edited by: user2750352 on 04-May-2009 07:51Hi,
What "environment variables" are you referring to that you have set? You shouldnt have to set any, unless you're talking about TNS_ADMIN just to avoid having to configure multiple TNSNames.ora's if you have multiple homes.
Your PATH doesnt need to include OH\network\admin, but thats not hurting anything. PATH is for dll loading, not for finding config files.
Do you still have 10g installed? When you connect using sqlplus user/pass@tnsname, are you using 11g sqlplus? Or is that coming from the 10g client? Multiple homes arent aware of each other, so if you have a 10g home and an 11g home, you'd have to configure tnsnames.ora for both (or use tns_admin).
As far as I know, the client software picks up tnsnames.ora by checking:
1) the local working directory
2) the tns_admin directory
3) the network\admin directory of the client home being used.
Hope it helps,
Greg -
Apex 4.0 - Can see view data in SQL*Plus but no data in Object Browser
Hi There,
I have just started using Apex 4.o and migrated some apps. I have an issue with a report, but see the same issue with Object browser, which is easier to describe.
I have a view:
create or replace view V_PLJ_USERDEF_CODES (
CODE_SET_ID,
CODE_SET_CODE,
CODE_SET_DESC,
CODE_ID,
CODE_SYS_CODE,
CODE_VALUE,
CODE_DESC,
DISPLAY_SEQ,
DISPLAY_FLAG,
LANGUAGE_CODE) as
select CS.CODE_SET_ID,
CS.CODE_SET_CODE,
CS.CODE_SET_DESC,
C.CODE_ID,
C.CODE_SYS_CODE,
C.CODE_VALUE,
C.CODE_DESC,
C.DISPLAY_SEQ,
C.DISPLAY_FLAG,
C.LANGUAGE_CODE
from PLJ_CODES C,
PLJ_CODE_SETS CS
where C.CODE_SET_ID = CS.CODE_SET_ID
and CS.CODE_SET_TYPE_CODE = SYS_CONTEXT('PLJUMPSTART','C_USERDEF_CODE_SET');This returns data in SQL*Plus, but no data in Object Browser OR report region based on this view.
Workspace parses in the same schema as tested in SQL*Plus.
If, in report, I swap out view, and use underlying table - no problem.
Any ideas -
thanks
PHi all,
Thanks for getting back so promptly.
It just seems weird to me, as tables are just fine, but not views.
In the underlying schema:
SQL> sho user
USER is "ICSREPORTING"
SQL> select count(*) from plj_codes;
COUNT(*)
107
SQL> select count(*) from v_plj_userdef_codes;
COUNT(*)
29And in the APEX schema
SQL> sho user
USER is "APEX_040000"
SQL> select count(*) from icsreporting.plj_codes;
select count(*) from icsreporting.plj_codes
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select count(*) from icsreporting.v_plj_userdef_codes;
select count(*) from icsreporting.v_plj_userdef_codes
ERROR at line 1:
ORA-00942: table or view does not exist
SQL>However, in SQL browser, I can see the data in PLJ_CODES but in V_PLJ_USERDEF_CODES, just the message "This view has no data". Indeed, it is like this for all views.
I even explicitly granted access to APEX_040000 but no good.
In fact, I would like to know more about how Apex gets access to do DML against the underlying parsing schema(s).
This is a little frustrating though. It worked just fine in lots of apps in version 2.1 to 3.2
Am I missing something
paul
p.s I knew there would be a question about the context, but I had already checked that. :)
Edited by: PJ on Nov 19, 2010 4:09 AM -
Where its not possible to use a variable (&&var) in SQL*PLUS ?
SQL*Plus Command Reference - DEFINE
Whenever you run a stored query or script, SQL*Plus substitutes the value of variable for each substitution variable referencing variable (in the form &variable or &&variable)
The question is which are the limits of this. Can eg even be between a 'STR&&varING' passed as parameter to some function? Or as parameter I can pass only a single variable and there isnt such auto-casting level ?
I have created DBCA Scripts to batch create a DB. So I want inside these scripts to replace the DBNAME with a variable. So I can create different DBS with these prescriptions from an API tool.
E.g here there are 6 different scenarios where I might need to pass the variable. I dont know
1. On which of the bellow scenarios I can inject the &&var
2. On which I cant and thus have to create a 2nd VAR to inject the 1st one
3. Which dont accept variables at all - but only static text
@D:\app\admin\DBNAMEY\scripts\CreateDB.sql
spool D:\app\admin\DBNAMEY\scripts\CreateDB.log append
startup nomount pfile="D:\app\admin\DBNAMEY\scripts\init.ora";
CREATE DATABASE "DBNAMEY"
DATAFILE 'D:\app\oradata\DBNAMEY\system01.dbf' SIZE ...
GROUP 2 ('D:\app\oradata\DBNAMEY\redo02.log') SIZE 51200K,
I may not start testing the scripts 6 times fearing corrupting my Workstation on half executed scripts.GoodfireGeorge wrote:
SQL*Plus Command Reference - DEFINE
Whenever you run a stored query or script, SQL*Plus substitutes the value of variable for each substitution variable referencing variable (in the form &variable or &&variable)
The question is which are the limits of this. Can eg even be between a 'STR&&varING' passed as parameter to some function? Or as parameter I can pass only a single variable and there isnt such auto-casting level ?
I have created DBCA Scripts to batch create a DB. So I want inside these scripts to replace the DBNAME with a variable. So I can create different DBS with these prescriptions from an API tool.
E.g here there are 6 different scenarios where I might need to pass the variable. I dont know
1. On which of the bellow scenarios I can inject the &&var
2. On which I cant and thus have to create a 2nd VAR to inject the 1st one
3. Which dont accept variables at all - but only static text
@D:\app\admin\DBNAMEY\scripts\CreateDB.sql
spool D:\app\admin\DBNAMEY\scripts\CreateDB.log append
startup nomount pfile="D:\app\admin\DBNAMEY\scripts\init.ora";
CREATE DATABASE "DBNAMEY"
DATAFILE 'D:\app\oradata\DBNAMEY\system01.dbf' SIZE ...
GROUP 2 ('D:\app\oradata\DBNAMEY\redo02.log') SIZE 51200K,
I may not start testing the scripts 6 times fearing corrupting my Workstation on half executed scripts.
If you can't test because you are afraid the test might fail, you need to address that issue first. No one on the web is going to give you iron-clad assurance that some code you write is going to work exactly as you expect.
Your script is trying to create a database? What's the worst thing that can happen if it doesn't work? Do you know how to manually dis-mantle whatever your script does? If not, you need to learn. The knowledge you will gain from that exercise will go a long way to improving your understanding of how these things interrelate. -
How to bind DATE variables in SQL*Plus
I have a stored procedure in a package that has a DATE OUT parameter
myPackage.myProcedure( outDate OUT DATE )
I am trying to test this from SQL*Plus
How do I specify a Bind variable for the outDate? The VARIABLE command does not allow DATE types?
If this was a CHAR type I could have done
VARIABLE myChar CHAR
BEGIN
myPackage.myProcedure( :myChar )
END;
PRINT myChar
How do I do this with DATE data types instead? I am using Oracle 8.1.7.you should use VARCHR2 type with the minimum length that can store a value defined by your NLS_DATE_FORMAT
string. The returned date will be converted to a VARCAHR2 type and the size and format will depend on
your NLS_DATE_FORMAT setting.
=============================================================================
SQL> variable dt VARCHAR2(20)
SQL> create or replace procedure ret_date(dt OUT DATE) is
2 begin
3 dt := SYSDATE ;
4 end ;
5 /
Procedure created.
SQL> exec ret_date(:dt) ;
PL/SQL procedure successfully completed.
SQL> print dt
DT
13-OCT-02
SQL> select sysdate from dual ;
SYSDATE
13-OCT-02
SQL> alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS' ;
Session altered.
SQL> exec ret_date(:dt) ;
PL/SQL procedure successfully completed.
SQL> print dt
DT
13-OCT-2002 10:43:23
SQL>
================================================================ -
Windows System Environment Variables in "Sql * plus"
Can i use/reference Windows System Environment variables in "Sql * plus"?
For example, i want to create sql-script to run in database server computer that asks variable "ORA_HOME" and uses this value to execute some sql/plsql sentences.
Oracle 10g Personal, Windows 7.
Edited by: CharlesRoos on 12.11.2010 17:28CharlesRoos wrote:
Business problem:
I have created 2 databases in my computer. Both databases needs tablespaces created by a script. Tablespaces' datafiles (.dbf files) names are same for both database. Both database has it's own directory where it holds datafiles at the moment. At the moment the datafiles for Database1 are in folder something like "%ORACLE_HOME%"\oradata\%databasename1%\*.dbf, and second database has its datafiles in other folder, somewhere ""%ORACLE_HOME%"\oradata\%databasename1%\*.dbf". I want now the script to create tablespace called "INDX" with same datafile name "indx1.dbf" into both database. So into both mentioned folder the file "indx1.dbf" must be created by script. I think the script should do following:
1. get ORACLE_HOME.
2. connect to database "databasename1"
3. EXECUTE IMMEDIATE "Create TableSpace INDX....file=%ORACLE_HOME% || databasename1 || indx1.dbf"
4. connect to database "databasename2"
5. EXECUTE IMMEDIATE "Create TableSpace INDX....file=%ORACLE_HOME% || databasename2 || indx1.dbf"I don't have Oracle database near by anymore, so the code was pseudocode.
I don't understand how to use ?-shortcut.OK, my first impression is "why does this even NEED to be scripted? Creation of new tablespaces is usually a one-off operation.
But that aside how about this sqlplus command-line substitution variables. This example is in linux, but will work as well in Windows with the change of the way environment variables are referenced:
*nix - echo $myvariable
Windows - echo %myvariable%
First, the sqlscript to create the TS. Note the use of the substitution variable "&1"
{code}
[oracle@vmlnx01 ~]$ cat cat makets.sql
set echo on feedback on verify on trimsp on
prompt &1
CREATE SMALLFILE TABLESPACE EDSTEST
DATAFILE '/ora01/oradata/&1/edstest.dbf'
SIZE 5M
REUSE
AUTOEXTEND ON
NEXT 1280K
MAXSIZE 32767M
LOGGING
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
drop tablespace edstest
including contents and datafiles
exit
{code}
So, at the OS prompt: Notice that the @ is separated by a space, makeing it a command line parm instead of part of the connect string
{code}
[oracle@vmlnx01 ~]$ export myparm=vlnxora1
[oracle@vmlnx01 ~]$ sqlplus system/pswd @makets $myparm
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 12 13:18:05 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> prompt &1
vlnxora1
SQL> --
SQL> CREATE SMALLFILE TABLESPACE EDSTEST
2 DATAFILE '/ora01/oradata/&1/edstest.dbf'
3 SIZE 5M
4 REUSE
5 AUTOEXTEND ON
6 NEXT 1280K
7 MAXSIZE 32767M
8 LOGGING
9 EXTENT MANAGEMENT LOCAL
10 SEGMENT SPACE MANAGEMENT AUTO
11 ;
old 2: DATAFILE '/ora01/oradata/&1/edstest.dbf'
new 2: DATAFILE '/ora01/oradata/vlnxora1/edstest.dbf'
Tablespace created.
SQL> --
SQL> drop tablespace edstest
2 including contents and datafiles
3 ;
Tablespace dropped.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@vmlnx01 ~]$
{code} -
How to create an apex session in e.g. SQL*Plus?
I would like to establish an apex session using a tool different from SQL Workshop.
How can I achieve this using e.g. SQL*Plus or SQL Developer?
Is there some document on the internet which addresses this question? I couldn't find it yet.First and foremost you need to set the Security Group ID (SGID)
begin
APEX_UTIL.SET_SECURITY_GROUP_ID(APEX_UTIL.FIND_SECURITY_GROUP_ID('MY_WORKSPACE')); -- replace MY_WORKSPACE with yours
end;
then you might need to set an application_id for certain features to work:
select application_id
into apex_application.g_flow_id
from apex_applications
where application_name = 'my_app_name'; -- replace my_app_name with yours
If you need to create a session id, you can get a fresh one with
DECLARE
VAL NUMBER;
BEGIN
VAL := APEX_CUSTOM_AUTH.GET_NEXT_SESSION_ID;
END;
Flavio
http://oraclequirks.blogspot.com
http://www.yocoya.com -
XE: Cant connect to sql*plus, APEX seems to function
Hi! I am a beginner in oracle.
I installed oracle XE 10g, both the server and the client on mandriva linux, using the supplied RPM's. After that I ran /etc/init.d/xe/configure and accepted the default values. Then I performed the post-installation steps as mentioned in APEX insstallation guide (sourcing the shell scripts).
In the APEX interface I can see the database, its staistics and I created a user. But when I try to connect using sql*plus, the connection is refused:
SQL> conn sys as sysdba
Enter password:
ERROR:
ORA-12545: Connect failed because target host or object does not exist
Judging from the output of commands below, there is something missing. Any ideas?
*> tnsping XE*
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 27-APR-2009 20:47:20
Copyright (c) 1997, 2005, Oracle. All rights reserved.
Message 3511 not found; No message file for product=network, facility=TNSTNS-03505: Message 3505 not found; No message file for product=network, facility=TNS
*> lsnrctl status*
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 27-APR-2009 20:45:35
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Message 1053 not found; No message file for product=network, facility=TNSMessage 1020 not found; No message file for product=network, facility=TNSMessage 1021 not found; No message file for product=network, facility=TNSMessage 1022 not found; No message file for product=network, facility=TNSMessage 1023 not found; No message file for product=network, facility=TNSMessage 1026 not found; No message file for product=network, facility=TNSMessage 1034 not found; No message file for product=network, facility=TNSMessage 1024 not found; No message file for product=network, facility=TNSMessage 1025 not found; No message file for product=network, facility=TNSMessage 1040 not found; No message file for product=network, facility=TNSMessage 1422 not found; No message file for product=network, facility=TNSMessage 1033 not found; No message file for product=network, facility=TNSMessage 1028 not found; No message file for product=network, facility=TNSMessage 1415 not found; No message file for product=network, facility=TNS Message 1050 not found; No message file for product=network, facility=TNS
Message 1050 not found; No message file for product=network, facility=TNS
Message 1050 not found; No message file for product=network, facility=TNS
Message 1029 not found; No message file for product=network, facility=TNSMessage 1411 not found; No message file for product=network, facility=TNS
Message 1408 not found; No message file for product=network, facility=TNS
Message 1411 not found; No message file for product=network, facility=TNS
Message 1408 not found; No message file for product=network, facility=TNS
Message 1411 not found; No message file for product=network, facility=TNS
Message 1408 not found; No message file for product=network, facility=TNS
Message 1411 not found; No message file for product=network, facility=TNS
Message 1408 not found; No message file for product=network, facility=TNS
Message 1052 not found; No message file for product=network, facility=TNSThe messages tell me that you do not have the ORACLE_HOME variable set correctly. This has been discussed umpteen times, but since search is beyond the call of duty, I'll copy/paste one of my recent responses
In Linux and Unix Oracle REQUIRES that variables ORACLE_HOME and ORACLE_SID be set properly. And *nix REQUIRES that an executable be in the PATH or explicitly referenced. The easiest way of setting those consistently and correctly is to source the oraenv routine which is placed in /usr/local/bin by the installer. To use that, and assuming you are using Linux,
1) Find out the ORACLE_SID for your reference
tail /etc/oratab
and note the last line. The first field will be the SID.
2) Source oraenv
. oraenv
[ oracle ]?: enter the SID here
and if you want to put this into a script, enter something like
ORAENV_ASK=NO
ORACLE_SID={enter your SID ehere}
. oraenv
ORAENV_ASK=
Many people will suggest you set these variables in your profile. In the long term that is a bad idea (and DBAs should always be thinking in the long term) since most DBAs end up with a second database, ORACLE_HOME, upgrade or product and oraenv ensures that there will be no conflicts. -
Using variables in SQL Plus Worksheet
I'm new to Oracle. I've developed in MS SQL for some time. I'm trying to debug a query we're using in an application. I paste it into SQL Plus Worksheet and get the message:
SP2-0552: Bind variable "COUNTYPK" not declared.
I could paste in a value, but I would like to define a variable before the query so that it will work the same way as it would in production.
SELECT rsiplate.OWNER.work_area_code || '-' || SUBSTR(rsiplate.OWNER.work_phone_number, 1, 3) || '-' || SUBSTR(rsiplate.OWNER.work_phone_number, 4, 4) AS BUSINESSPHONE, trim(rsiplate.OWNER.first_name||' '||rsiplate.OWNER.middle_name||' '||rsiplate.OWNER.last_name) AS BUSINESSNAME, rsiplate.ADDRESS.address_line1 AS ADDRESSLINE1, rsiplate.ADDRESS.address_line2 AS ADDRESSLINE2, rsiplate.ADDRESS.city_name AS CITY, rsiplate.ADDRESS.state_code AS STATE, SUBSTR(rsiplate.ADDRESS.zip_code, 1, 5) AS POSTALCODE FROM rsiplate.WATERCRAFT_MASTER, rsiplate.WATERCRAFT_CURRENT, rsiplate.WATERCRAFT_REGIST_CURRENT, rsiplate.OWNER, rsiplate.WATERCRAFT_OWNER_CURRENT, rsiplate.ADDRESS WHERE rsiplate.WATERCRAFT_MASTER.WATERCRAFT_ID = rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_ID AND rsiplate.WATERCRAFT_MASTER.LF_WATERCRAFT_REGIST_ORDER = rsiplate.WATERCRAFT_REGIST_CURRENT.WATERCRAFT_REGIST_ORDER AND rsiplate.WATERCRAFT_MASTER.LF_WATERCRAFT_ORDER = rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_ORDER AND rsiplate.WATERCRAFT_MASTER.watercraft_id = rsiplate.WATERCRAFT_REGIST_CURRENT.watercraft_id and rsiplate.WATERCRAFT_MASTER.watercraft_id = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_id and rsiplate.WATERCRAFT_OWNER_CURRENT.owner_id = rsiplate.OWNER.owner_id and rsiplate.WATERCRAFT_MASTER.watercraft_owner_group = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_group and rsiplate.ADDRESS.address_set_id = rsiplate.OWNER.address_set_id and rsiplate.WATERCRAFT_MASTER.data_status_code = 1 and rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_order = 1 and rsiplate.WATERCRAFT_REGIST_CURRENT.REGIST_EXPIRATION_DATE >= SYSDATE AND rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_USE_CODE = 3 AND rsiplate.ADDRESS.COUNTY_NUMBER = :CountyPK GROUP BY rsiplate.OWNER.work_area_code, rsiplate.OWNER.work_phone_number, rsiplate.OWNER.first_name, rsiplate.OWNER.middle_name, rsiplate.OWNER.last_name, rsiplate.ADDRESS.address_line1, rsiplate.ADDRESS.address_line2, rsiplate.ADDRESS.city_name, rsiplate.ADDRESS.state_code, rsiplate.ADDRESS.zip_code;Okay, I made some adjustements:
SET DEFINE :
DEFINE :COUNTYPK = '01'
SELECT rsiplate.OWNER.work_area_code||'-'||SUBSTR(rsiplate.OWNER.work_phone_number, 1, 3)||'-'||SUBSTR(rsiplate.OWNER.work_phone_number, 4, 4) AS BUSINESSPHONE, trim(rsiplate.OWNER.first_name||' '||rsiplate.OWNER.middle_name||' '||rsiplate.OWNER.last_name) AS BUSINESSNAME, rsiplate.ADDRESS.address_line1 AS ADDRESSLINE1, rsiplate.ADDRESS.address_line2 AS ADDRESSLINE2, rsiplate.ADDRESS.city_name AS CITY, rsiplate.ADDRESS.state_code AS STATE, SUBSTR(rsiplate.ADDRESS.zip_code, 1, 5) AS POSTALCODE FROM rsiplate.WATERCRAFT_MASTER, rsiplate.WATERCRAFT_CURRENT, rsiplate.WATERCRAFT_REGIST_CURRENT, rsiplate.OWNER, rsiplate.WATERCRAFT_OWNER_CURRENT, rsiplate.ADDRESS WHERE rsiplate.WATERCRAFT_MASTER.WATERCRAFT_ID = rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_ID AND rsiplate.WATERCRAFT_MASTER.LF_WATERCRAFT_REGIST_ORDER = rsiplate.WATERCRAFT_REGIST_CURRENT.WATERCRAFT_REGIST_ORDER AND rsiplate.WATERCRAFT_MASTER.LF_WATERCRAFT_ORDER = rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_ORDER AND rsiplate.WATERCRAFT_MASTER.watercraft_id = rsiplate.WATERCRAFT_REGIST_CURRENT.watercraft_id and rsiplate.WATERCRAFT_MASTER.watercraft_id = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_id and rsiplate.WATERCRAFT_OWNER_CURRENT.owner_id = rsiplate.OWNER.owner_id and rsiplate.WATERCRAFT_MASTER.watercraft_owner_group = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_group and rsiplate.ADDRESS.address_set_id = rsiplate.OWNER.address_set_id and rsiplate.WATERCRAFT_MASTER.data_status_code = 1 and rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_order = 1 and rsiplate.WATERCRAFT_REGIST_CURRENT.REGIST_EXPIRATION_DATE >= SYSDATE AND rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_USE_CODE = 3 AND rsiplate.ADDRESS.COUNTY_NUMBER = :CountyPK GROUP BY rsiplate.OWNER.work_area_code, rsiplate.OWNER.work_phone_number, rsiplate.OWNER.first_name, rsiplate.OWNER.middle_name, rsiplate.OWNER.last_name, rsiplate.ADDRESS.address_line1, rsiplate.ADDRESS.address_line2, rsiplate.ADDRESS.city_name, rsiplate.ADDRESS.state_code, rsiplate.ADDRESS.zip_code;
But I still get this:
SP2-0317: expected symbol name is missing
old 2: iplate.WATERCRAFT_REGIST_CURRENT.watercraft_id and rsiplate.WATERCRAFT_MASTER.watercraft_id = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_id and rsiplate.WATERCRAFT_OWNER_CURRENT.owner_id = rsiplate.OWNER.owner_id and rsiplate.WATERCRAFT_MASTER.watercraft_owner_group = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_group and rsiplate.ADDRESS.address_set_id = rsiplate.OWNER.address_set_id and rsiplate.WATERCRAFT_MASTER.data_status_code = 1 and rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_order = 1 and rsiplate.WATERCRAFT_REGIST_CURRENT.REGIST_EXPIRATION_DATE >= SYSDATE AND rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_USE_CODE = 3 AND rsiplate.ADDRESS.COUNTY_NUMBER = :CountyPK GROUP BY rsiplate.OWNER.work_area_code, rsiplate.OWNER.work_phone_number, rsiplate.OWNER.first_name, rsiplate.OWNER.middle_name, rsiplate.OWNER.last_name, rsiplate.ADDRESS.address_line1, rsiplate.ADDRESS.address_line2, rsiplate.ADDRESS.city_name, rsiplate.ADDRESS.state_code, rsiplate.ADDRESS.zip_code
new 2: iplate.WATERCRAFT_REGIST_CURRENT.watercraft_id and rsiplate.WATERCRAFT_MASTER.watercraft_id = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_id and rsiplate.WATERCRAFT_OWNER_CURRENT.owner_id = rsiplate.OWNER.owner_id and rsiplate.WATERCRAFT_MASTER.watercraft_owner_group = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_group and rsiplate.ADDRESS.address_set_id = rsiplate.OWNER.address_set_id and rsiplate.WATERCRAFT_MASTER.data_status_code = 1 and rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_order = 1 and rsiplate.WATERCRAFT_REGIST_CURRENT.REGIST_EXPIRATION_DATE >= SYSDATE AND rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_USE_CODE = 3 AND rsiplate.ADDRESS.COUNTY_NUMBER = 01 GROUP BY rsiplate.OWNER.work_area_code, rsiplate.OWNER.work_phone_number, rsiplate.OWNER.first_name, rsiplate.OWNER.middle_name, rsiplate.OWNER.last_name, rsiplate.ADDRESS.address_line1, rsiplate.ADDRESS.address_line2, rsiplate.ADDRESS.city_name, rsiplate.ADDRESS.state_code, rsiplate.ADDRESS.zip_code
iplate.WATERCRAFT_REGIST_CURRENT.watercraft_id and rsiplate.WATERCRAFT_MASTER.watercraft_id = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_id and rsiplate.WATERCRAFT_OWNER_CURRENT.owner_id = rsiplate.OWNER.owner_id and rsiplate.WATERCRAFT_MASTER.watercraft_owner_group = rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_group and rsiplate.ADDRESS.address_set_id = rsiplate.OWNER.address_set_id and rsiplate.WATERCRAFT_MASTER.data_status_code = 1 and rsiplate.WATERCRAFT_OWNER_CURRENT.watercraft_owner_order = 1 and rsiplate.WATERCRAFT_REGIST_CURRENT.REGIST_EXPIRATION_DATE >= SYSDATE AND rsiplate.WATERCRAFT_CURRENT.WATERCRAFT_USE_CODE = 3 AND rsiplate.ADDRESS.COUNTY_NUMBER = 01 GROUP BY rsiplate.OWNER.work_area_code, rsiplate.OWNER.work_phone_number, rsiplate.OWNER.first_name, rsiplate.OWNER.middle_name, rsiplate.OWNER.last_name, rsiplate.ADDRESS.address_line1, rsiplate.ADDRESS.address_line2, rsiplate.ADDRESS.city_name, rsiplate.ADDRESS.state_code, rsiplate.ADDRESS.zip_code
ERROR at line 2:
ORA-00933: SQL command not properly ended -
How to pass table type variable into function from SQL*PLUS ?
How to pass a table type variable from sql*plus prompt into a function ?
Thanx in advance.Krishna,
Do you mean like this?SQL> DECLARE
2 TYPE t_tbl IS TABLE OF VARCHAR2(20);
3 l_sample_tbl t_tbl;
4
5 FUNCTION print_contents ( p_tbl IN t_tbl )
6 RETURN VARCHAR2
7 IS
8 l_string VARCHAR2(1000);
9 BEGIN
10 FOR i IN 1..p_tbl.COUNT LOOP
11 IF (i = 1) THEN
12 l_string := p_tbl(i);
13 ELSE
14 l_string := l_string || ', ' || p_tbl(i);
15 END IF;
16 END LOOP;
17 RETURN (l_string);
18 END print_contents;
19
20 BEGIN
21 l_sample_tbl := t_tbl();
22 l_sample_tbl.EXTEND;
23 l_sample_tbl(1) := 'one';
24 l_sample_tbl.EXTEND;
25 l_sample_tbl(2) := 'two';
26 l_sample_tbl.EXTEND;
27 l_sample_tbl(3) := 'three';
28 l_sample_tbl.EXTEND;
29 l_sample_tbl(4) := 'four';
30 l_sample_tbl.EXTEND;
31 l_sample_tbl(5) := 'five';
32 DBMS_OUTPUT.PUT_LINE(print_contents(l_sample_tbl));
33 END;
34 /
one, two, three, four, five
PL/SQL procedure successfully completed.
SQL> HTH,
T. -
Substitution variables in Sql*Plus
Hi all,
How to make Sql*Plus ask for the substitution variable value one time only for a substitution variable even if it appears multiple times inside a query ? Because so far each time I launched the query below then I have been asked two times by Sql*Plus for the variable value. For example : select ref_site from t_comsis where longitude_lamb + latitude_lamb < &distance + power(&distance,2).
Thanksof course accept is more friendly, you can check for valid number, you can have a prompt or a hidden input.
you can also undef your variable if you prefer the && solution
SQL> select &&x+&&x from dual;
Enter value for x: 1
old 1: select &&x+&&x from dual
new 1: select 1+1 from dual
1+1
2
SQL> undef x
SQL> r
1* select &&x+&&x from dual
Enter value for x: 2
old 1: select &&x+&&x from dual
new 1: select 2+2 from dual
2+2
4 -
Using Bind variables in SQL PLUS Report
using Bind variables in SQL PLUS Report. This report gets the arguments from the application concurrent program. Now my need is to convert the start_date and end_date to bind Variables to improve the performance. I have commented the original code in 'prompt List of Unapproved Adjustments' and used my Bind Variable but it is giving an error
error: Bind Variable "ENDING_DATE" not declared
Report Date and Time:
26-OCT-2010 15:44:13
List of Unapproved Adjustments
Bind Variable 'ENDING_DATE" not declared
Please see below the code for the sql plus report:
define p_org_id = '&1'
define p_fy_begin_date = '&2'
define p_start_date = '&3'
define p_end_date = '&4'
define p_conversion = '&5'
declare
variable begin_date date;
exec :begin_date := p_start_date;
variable ending_date date;
exec :ending_date := p_end_date;
/* Begin
:begin_date := to_date('&p_start_date','YYYY/MM/DD HH24:MI:SS');
:ending_date := to_date('&p_end_date','YYYY/MM/DD HH24:MI:SS');
End; */
set newpage none
set termout off
set pagesize 55
set linesize 180
set heading on
set feedback off
set wrap off
set space 1
set heading on
begin
dbms_application_info.set_client_info('&p_org_id');
end;
prompt
prompt Report Date and Time:
prompt ----------------------
select to_char(sysdate,'DD-MON-YYYY HH24:MI:SS')
from dual ;
prompt
prompt List of Unapproved Adjustments
prompt -------------------------------
select b.trx_number,
a.adjustment_number,
f.user_name created_by
from apps.ar_adjustments a,
apps.ra_customer_trx b,
apps.fnd_user f
where a.customer_trx_id = b.customer_trx_id
and a.status <> 'A'
and a.created_by = f.user_id
and a.creation_date between :begin_date
and :ending_date
-- and a.creation_Date between to_date('&p_start_date','YYYY/MM/DD HH24:MI:SS')
-- and to_date('&p_end_date','YYYY/MM/DD HH24:MI:SS')
order by
b.trx_number ;Hi
Please go to customization part of the report and verify..You have set a default value out there ..And also verify your lov and look at the values ..If it is again giving you the problem ..pl delete the report and develop it again from the scratch it will be solved...
vishnu
null -
SQL*Plus variable assignment works for 8i but not 9i
We have scripts that connect to each database on the box and perform database tasks nightly. The scripts first set the environment then connects to each database with SQL*Plus. This works for 8i but fails in the recently created 9i environment. (Unix Solaris environment)
Because the SQL*Plus connection appears in many areas in the scripts, we assign the following connection string to a variable:
SQLPLUS="/usr/oracle/product/9.2.0/bin/sqlplus -s 'xxx/xxxxxx@xxxx as sysdba'"
Export SQLPLUS
echo "$SQLPLUS"
(This echo out correctly: /usr/oracle/product/9.2.0/bin/sqlplus -s 'xxx/xxxxxx@xxxx as sysdba')
It fails when the script calls the assigned variable:
$SQLPLUS <<-EOF
with the following error:
Usage: SQLPLUS [ [<option>] [<logon>] [<start>] ]
where <option> ::= -H | -V | [ [-L] [-M <o>] [-R <n>] [-S] ]
<logon> ::= <username>[<password>][@<connect_string>] | / | /NOLOG
<start> ::= @<URI>|<filename>[.<ext>] [<parameter> ...]
"-H" displays the SQL*Plus version banner and usage syntax
"-V" displays the SQL*Plus version banner
"-L" attempts log on just once
"-M <o>" uses HTML markup options <o>
"-R <n>" uses restricted mode <n>
"-S" uses silent mode
However, if I remove the SQLPLUS variable assignment and changed all occurrence of
$SQLPLUS <<-EOF to
/usr/oracle/product/9.2.0/bin/sqlplus -s 'xxx/xxxxxx@xxxx as sysdba' <<-EOF
Then the script runs successfully. But this solution is cumbersome.
Any ideas as to how to have the script work with assigning the SQLPLUS variable????
Any help is appreciated.I has an immediate suspicion it might be related to the issue
mentioned in
http://otn.oracle.com/support/tech/sql_plus/htdocs/sub_var2.html#2_7
but this proved wrong: the SP2-306 still occurs in the latest
SQL*Plus.
I wonder what version of 8i you had working? With an old SQL*Plus
8.1.7.0 my connection failed the same as in 9.2 and 10i.
My solution was to do:
SQLPLUS='sqlplus -s'
UNPW='/ as sysdba'
$SQLPLUS "$UNPW" <<EOF
EOFThis worked in 9.2.0.5, 10.1.0.2 and 8.1.7.0.
One common security risk on UNIX remains: putting the username and
password on the command line. On some systems a "ps" command will
show the password to any user. If OS authentication cannot be used
for connection, perhaps putting the username/password in the SQL
script may be more secure?
A final note is that in SQL*Plus 10g, no quotes are needed around
AS SYSDBA, i.e.
sqlplus / as sysdba works from the OS prompt, whereas in 9.2 you need to do
sqlplus "/ as sysdba"This makes a solution easy:
SQLPLUS="/usr/oracle/product/10.1.0/bin/sqlplus -s xxx/xxxxxx@xxxx as sysdba"-- CJ -
many times, i am confused by the way to assess a variable defined in sql*plus. can someone give a clear explanation on the difference and when to use which?
&var, &&var, :varnot sure if this will help
SQL> define vDepNo = 20;
SQL> variable vDepNo number;
SQL> execute :vDepNo := &vDepNo;
PL/SQL procedure successfully completed.
SQL> select * from emp
2 where deptno = :vDepNo;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7566 JONES MANAGER 7839 02-APR-81 2975 1000 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
7788 SCOTT ANALYST 7566 09-DEC-82 3000 20
7876 ADAMS CLERK 7788 12-JAN-83 1100 20
SQL> select * from emp
2 where deptno = &&vDepNo;
old 2: where deptno = &&vDepNo
new 2: where deptno = 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7566 JONES MANAGER 7839 02-APR-81 2975 1000 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
7788 SCOTT ANALYST 7566 09-DEC-82 3000 20
7876 ADAMS CLERK 7788 12-JAN-83 1100 20
SQL>
Maybe you are looking for
-
Keep client and language information for login after timeout
Hello experts, i'm using the url parameters sap-client and sap-language that the user can login without them. The parameters are filled on a mobile device and on different plants these parameters are different. When the user logout with the logout bu
-
"Lighting Effects" not showing active in menu
I am running CS6 and dont have access to Light Effects in my drop down menu. How do I activate it for use? Thanks
-
What is the touchless command to open a mobile hotspot?
According to Verizon's description: When powered on, the Verizon–exclusive Droid Maxx is always ready for touchless control–even when it's asleep. Need to open a mobile hotspot or get GPS directions? Accomplish it all with simple voice commands and w
-
Sales Order Punching Through Bapi
Hi Experts, I have got an assignment of doing Salesorder punching in portal and through web dynpro. I have used BAPI_SALESORDER_GETLIST through RFC connection. But can you tell me what diffrent Bapi's will be required for my task and where relevant d
-
Moving files (also laptop-desktop synchronization / archiving)
I know I've seen this problem nicely discussed someplace, but can't remember where. The typical example described is that of somebody on a trip where they take a laptop and get to work with Lightroom. How do they integrate what they've done with thei