Insert statement in sql with one field set as autonumber - sql

I am having three columns in my table branch i.e id(Autonumber),code(text),desc(text).I am trying to execute this sql
insert into branch(code,desc) values('"+b+"','"+c+"')";
which gives me error syntax error..please help

One of your columns has name DESC, which is Reserved Keyword. In order to peoperly execute the INSERT statement, you need to delimite the column by using brackets eg
insert into branch(code,[desc]) values ('"+b+"','"+c+"')";
MSACCESS Reserved Keywords List
One more thing, your code is prone to SQL Injection. Please do parameterized the query.

Related

How use SELECT in append query in Access SQL?

In MS Access, I created a query by create Menu-> Query Design (with name Query3).
I want use it in an SQL command in another query but when I run it got this error:
Syntax error on query expression 'select f1'
SQL command
INSERT INTO boors (boors.Nemad, boors.Volumn, boors.Price,
boors.LastPrice, boors.LastPerc, boors.LastPr,
boors.LastPer, boors.MinPrice, boors.MaxPrice,
boors.distance, boors.inout, boors.Power)
values (select f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12 FROM Query3)
It appears that you are mixing the SQL used for inserting values and inserting from a table/query. As you are doing the latter, your SQL should look like:
INSERT INTO boors (Nemad, Volumn)
SELECT F1, F2
FROM Query3
Regards,

How to store the result of select statement into the temporary table in Oracle?

We can write select column1,column2 into #temp from tableName in SQL Server. But I am unable to write the same query in an Oracle database.
I want to store the result of select/insert/delete/update or any result set into a local temporary table in oracle database. How I can do this?
I am executing below query in my Oracle sql developer tool:
select * into #temp
from bmi;
but I am getting the error as follow please help to find this error.
when I execute the same query in Microsoft SQL Server it get executed & #temp table get created which is not present in the database but it can hold the data for that particular session. so i want same scenario in ORACLE database.
ORA-00911: invalid character
00911. 00000 - "invalid character"
*Cause: identifiers may not start with any ASCII character other than
letters and numbers. $#_ are also allowed after the first
character. Identifiers enclosed by doublequotes may contain
any character other than a doublequote. Alternative quotes
(q'#...#') cannot use spaces, tabs, or carriage returns as
delimiters. For all other contexts, consult the SQL Language
Reference Manual.
*Action:
Error at Line: 1 Column: 15
I want to store the result of select/insert/delete/update or any result set into a local temporary table in oracle database,How I can Do This?
You can't. Oracle doesn't have local temporary tables, it doesn't work like that. But it doesn't need to. Oracle has a very different internal model from SQL Server which means a lot of SQL Server practices are unnecessary in Oracle. (To be fair SQL Server has neat things which Oracle doesn't, like ANSI 92 Joins for DML.)
The key insight is: you don't want to store the result of select/insert/delete/update or any result set into a local temporary table. That is something you had to do in T-SQL to achieve the end goal of implementing some business logic. But what you actually wanted to do in SQL Server and what you want to do in Oracle is write some code which delivers value to your organisation.
So, with that mindset in place, what do you need to do?
If you want to loop round a result set then perhaps a Cursor Loop is what you're looking for?
for rec in ( select * from some_table
where the_date = date '2018-02-01' )
loop
...
If you want to work on some data prior to inserting it into a data then perhaps you should use a PL/SQL collection:
type l_recs is table of some_table%rowtype;
But maybe you just need to understand Oracle's Transaction Management model. A lot of things are possible in pure SQL without any need for procedural framework.
Create temporary table :
create global temporary table
results_temp (column1, column2)
on commit preserve rows;
and then insert to it from your table:
insert into results_temp (column1, column2 )
SELECT column1,column2
FROM source_table
create global temporary table temp_table_name
on commit preserve rows as select column1,column2,columnN from your_table;

Insert parameterized query

I want to perform insert operation on a list of objects.
My insert query looks like below
insert into table name (#[flowVars['columnNames']]) values (#[flowVars['values']])
#[flowVars['columnNames'] contains the comma separated columnNames like col1,col2
#[flowVars['values'] contains #[payload.?val1], #[payload.?val2]
I get the below error.
Invalid column name '#P0'. (com.microsoft.sqlserver.jdbc.SQLServerException)
How can i solve this issue?
I can suggest you debug and check whether you have correct value has been set for flowVars['columnNames'] and flowVars['values'], also you can put it in logger to see its value in log. Then check if the output from the above is matching with the column name required for this insert operation.
IMHO, the Query above is not suitable for the Parameterized query. Because the constructed query will be incorrectly interpreted by Mule. It might be constructed like this: insert into tableName ('col1,col2') values ('\'val1\',\'val2\'')
Therefore, I suggest to change the Query Type to: Dynamic.

Oracle SQL command not properly ended

I am doing a simple insert and am stumped, I'm new to oracle and unsure of what the issue is. I don't have the table structure so I am guessing that most of the fields are character except the dates.
Anyway here is my query, can anyone find the issue?
INSERT INTO PHANTOM_BOXES (CARRIER_CODE,CARRIER_TRACKING_NO,SENT_DATE,SEND_COST,
RECEIVED_DATE,REC_COST, COMMENTS,SHIPPING_TECH,RECEIVING_TECH)
VALUES ('1','11',TO_DATE('2016-02-04','YYYY-MM-DD'),'1',
TO_DATE('2016-02-04','YYYY-MM-DD'),'1','1','26437','0')
WHERE BOX_NO = '6738'
NO where dude.what is ther where for.
INSERT INTO PHANTOM_BOXES (CARRIER_CODE,CARRIER_TRACKING_NO,SENT_DATE,SEND_COST,
RECEIVED_DATE,REC_COST, COMMENTS,SHIPPING_TECH,RECEIVING_TECH,BOX_NO)
VALUES ('1','11',TO_DATE('2016-02-04','YYYY-MM-DD'),'1',
TO_DATE('2016-02-04','YYYY-MM-DD'),'1','1','26437','0','6738')
WHERE BOX_NO = '6738'
INSERT statement cannot have a WHERE clause, makes no sense.
Simply do INSERT INTO..VALUES:
INSERT INTO PHANTOM_BOXES (CARRIER_CODE,CARRIER_TRACKING_NO,SENT_DATE,SEND_COST,
RECEIVED_DATE,REC_COST, COMMENTS,SHIPPING_TECH,RECEIVING_TECH)
VALUES ('1','11',TO_DATE('2016-02-04','YYYY-MM-DD'),'1',
TO_DATE('2016-02-04','YYYY-MM-DD'),'1','1','26437','0')
Where Clause is used for filter and applying condition Rows which were already present in Table.
Seems you are trying to update the values for WHERE BOX_NO = '6738'
For this you have to use Update Statement
Update PHANTOM_BOXES
Set CARRIER_CODE='1',
CARRIER_TRACKING_NO='11',
SENT_DATE=TO_DATE('2016-02-04','YYYY-MM-DD'),
SEND_COST='1',
RECEIVED_DATE=TO_DATE('2016-02-04','YYYY-MM-DD'),
REC_COST='1',
COMMENTS,SHIPPING_TECH='26437',
RECEIVING_TECH='0';

SQL INSERT with sub query

I have a table with 2 columns. I want to provide the 1st columns value but use a select statement to query another table to figure out the value that will go in the 2nd column of the first table.
Heres what I came up with but I know is wrong..
INSERT INTO VehicleModels_VehicleSubModels (VehicleModelId, VehicleSubModelYearId)
(SELECT #ModelId, VehicleSubModelYearId
FROM VehicleSubYearIntermediate
WHERE SubModelId=#SubModelId
AND YearId=#YearId)
Essentially I want to provide the value for VehicleModelId through #ModelId, but it won't let me use it outside of the select statement.
Try removing the brackets around the SELECT, as presumbably you're seeing an incorrect syntax error?
INSERT INTO VehicleModels_VehicleSubModels (VehicleModelId, VehicleSubModelYearId)
SELECT #ModelId,VehicleSubModelYearId
FROM VehicleSubYearIntermediate
WHERE SubModelId=#SubModelId
AND YearId=#YearId