Create an index-by table and populate with rows from emp, then loop over and print them [closed] - plsql

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
Create an index-by table and populate with rows from emp, then loop over and print them.
hi can anyone understand this question and give me the suggestions to solve this please..

A collection is an ordered group of elements having the same data type
which can be accessed though subscript/index. Oracle PL/SQL supports
three different types of collection
Index-by tables or Associative array
Nested table
Variable-size array or Varray
Below is an example of how you can define a Index-by table and populate it with rows from Emp table and print them accordingly.
DECLARE
CURSOR c_emp is
select name from emp;
TYPE c_list IS TABLE of emp.name%type INDEX BY binary_integer;
name_list c_list;
counter integer :=0;
BEGIN
FOR n IN c_emp LOOP
counter := counter +1;
name_list(counter) := n.name;
dbms_output.put_line('Employee('||counter|| '):'||name_list(counter));
END LOOP;
END;
/
See Oracle Documentation as well as PL/SQL - Collections for more information on the same.

Related

Deleting rows past a certain row index [duplicate]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I have new data coming into the app all the time, so I want to limit the number of rows in a table to, say, 100 records. I would describe it as a FIFO queue. Whenever there new data (just a few rows a time) coming in, old data at the 'bottom' of the table are flushed out and deleted. Since it's FIFO, I don't want to manually perform a sort, then delete, then insert back in. I guess there must be cheap way to do this, right?
Thanks
A query like this will show all recors, newest first:
SELECT *
FROM MyTable
ORDER BY Date DESC -- or some autoincrementing ID column
With an OFFSET clause, you can skip the first records.
This means that you get all records except the first 100 ones, i.e., you get those records that should be deleted:
SELECT *
FROM MyTable
ORDER BY Date DESC
LIMIT -1 OFFSET 100
You can then use this in a subquery to actually delete the records:
DELETE FROM MyTable
WHERE ID IN (SELECT ID
FROM MyTable
ORDER BY Date DESC
LIMIT -1 OFFSET 100)

How to avoid duplicate records insertion in database table using stored procedure? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I have a database table with these columns:
Banner_Title varchar(500)
Existing_Banner_Image varchar(500)
Banner_URL varchar(500)
Banner_ALT varchar(500)
CheckBoxText varchar(500)
[for these 3 checkboxes have taken chkArticles,chkFittness,chkHealthArticle
but I want to check checkboxes also while insertion of data.For that I added one extra column in datatable named as sectionId for chkArticle checkbox I will assign 10 as a sectionId ,for chkFittness sectionId 11 and for chkHealthArticle as 12 so when I insert banner_title='article1', click chkArticle checkbox and fill other field data as mentioned in table format from then data should insert but next time when I try banner_title='article1' and click same checkbox then data not allowed to insert.but when I give banner_name='article1' and click another checkbox chkFittness it should allowed though the name of banner is same but maintained sectionid for checkboxes is different then what changes need to do stored procedure?? Basically I want to maintained unique banner_title for each checkbox click and to differentiate I maintained sectionid.plz help me
Create Unique constraint:
USE YourDatebase;
GO
ALTER TABLE YourTable
ADD CONSTRAINT YourConstraintName UNIQUE (Banner_Title);
GO
Check if banner title exists before insert attempt:
IF NOT EXISTS(SELECT Banner_Title FROM YourTable WHERE Banner_Title =
'TitleYourAreAttemptingToInsert')
BEGIN
INSERT .....
END

I have create procedure code,what is the delete procedure code [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
I have create procedure code, what is a delete procedure code.
Create procedure [dbo].[saveemp]
#Empname varchar(50),
#EmpAddress varchar(50),
#EmpDOB int,
#EmpGender varchar(50)
as
begin
insert employee(Empname, EmpAddress, EmpDOB, EmpGender)
values (#Empname, #EmpAddress, #EmpDOB, #EmpGender)
end
you are missing into in insert statement
insert into employee(Empname,EmpAddress,EmpDOB,EmpGender)
values
(#Empname,#EmpAddress,#EmpDOB,#EmpGender)
for deleting row using procedure
Create procedure [dbo].[deleteempname]
#Empname varchar(50)
as
BEGIN
DELETE FROM employee WHERE Empname= #Empname
END
Are you looking for "drop procedure"? http://technet.microsoft.com/en-us/library/ms174969.aspx
To delete the whole table, your query will be,
DELETE FROM employee
And to delete a single row (depending upon a parameter) it will be like,
DELETE FROM employee WHERE EmpName= #EmpName
It will be better if you delete a row depending upon the primary key (if you have any),
DELETE FROM employee WHERE EmpID = #EmpID

Looping through multiple results in PLSQL [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I have a select query which returns 50 results. The select query returns id .
The next part i need to run a select query which value for all the 50 ids.
Please can some one tell me what is the best way to get it done.
is using a for loop a good idea
e.g.
begin
declare #count= select id from table1
for 1 to #count ..loop
select value from table2 where id =1
end loop
Can i use cursors what is the best method.
Please elaborate on this statement "The next part i need to run a select query which value for all the 50 ids."
However, if you want to fetch those 50 records in a pl/sql block and manipulate them in some way, you would require a cursor. Records from cursor can be fetched both with and without FOR loop.
Cursor example:
declare
cursor c1 is select col1 from table1;
begin
for a in c1
loop
dbms_output.put_line(a.col1);
end loop;
end;
The above piece of code would display the values from col1 when server output is on.
In a simple case such as you suggest I think it's a bad idea to build up a collection of values and then iterate through them to fetch data from a second table. It's a better idea to use a JOIN to, well, join together the data from the two tables based on whatever criteria you've got. In this case it appears you're select an ID value from TABLE1 which is also on TABLE2. Thus, you might consider something like the following:
FOR myRow IN (SELECT t1.ID, t2.VALUE
FROM TABLE1 t1
INNER JOIN TABLE2 t2
ON (t2.ID = t1.ID))
LOOP
-- Do something useful with the data
DBMS_OUTPUT.PUT_LINE('t1.ID=' || myRow.ID || ' t2.VALUE=' || t2.VALUE);
END LOOP;
Share and enjoy.
Given below can be onw good waye
declare
cursor c1 is select value from table2 where id in (select id from table1)
begin
for i in c1
loop
...
...
end loop;
end;

last record from database [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 years ago.
Improve this question
Get the last record from a Microsoft SQL database table using ASP.net (VB) onto a web form.
I'm assuming he's trying to retrieve the last inserted record. As Ariel pointed out, the question is rather ambiguous.
SELECT TOP 1 * FROM Table ORDER BY ID DESC
If you have an identity column called ID, this is easiest. If you don't have an identity PK column for example a GUID you wont be able to do this.
Here is a basic solution:
var order = (from i in db.orders
where i.costumer_id.ToString() == Session["costumer_id"]
orderby i.order_id descending
select i).Take(1).SingleOrDefault();
You need to be more specific with actually putting it onto a web form, but the SQL to get the last record is:
SELECT *
FROM TABLE_NAME
WHERE ID = (SELECT MAX(ID) FROM TABLE_NAME)
Where ID is your ID and TABLE_NAME is your table name.

Resources