|
If you don't want to use any of the built in Oracle commands, then you could achieve this by using a cursor to iterate over the user's salary and keep a running total that way.
|
|
|
|
|
declare @temp table (ename varchar(10), sal int)
insert into @temp values ('Anu', 10)
insert into @temp values ('Minu', 20)
insert into @temp values ('Tusar', 20)
insert into @temp values ('Piter', 10)
select exp(sum(log(sal))) from @temp
|
|
|
|
|
It returns the wrong answer in some cases change the values and then try.
the difference of values are in some points.
If you can think then I Can.
|
|
|
|
|
Try
SELECT CAST(ROUND(COALESCE(EXP(SUM(LOG(ABS(NULLIF(sal,0))))),0)*SIGN(MIN( ABS(sal)))*(COUNT(NULLIF(SIGN(sal),1))%2*-2+1),0) AS INTEGER)
FROM @temp
|
|
|
|
|
Briallent Wow
Thanks
If you can think then I Can.
|
|
|
|
|
Hi,
Even though you mentioned that you don't want to use PL/SQL you could be interested in this: Custom aggregates in Oracle[^]
Best regards,
mika
|
|
|
|
|
Dear Friends,
<List>
<Entry>
<id>1</uid>
<lastName>abc</lastName>
<idList>
<id>
<id>1</uid>
<idType>pqr</idType>
<idNumber>1001</idNumber>
<idCountry>INDIA</idCountry>
</id>
<id>
<id>2</uid>
<idType>xyz</idType>
<idNumber>1002</idNumber>
<idCountry>USA</idCountry>
</id>
</idList>
</Entry>
Above is the xml i have in my database i want to read this information and return output as given below
id LastName id idType idNumber idCountry
1 abc 1 pqr 1001 INDIA
1 abc 2 xyz 2001 USA
i am using OPENXML in my stored procedure the code is as given below
DECLARE @HANDLE INT
DECLARE @XMLDOC XML
SET @XMLDOC = (select ofacList from tbl_OFAC_SDN_List)
EXEC SP_XML_PREPAREDOCUMENT @HANDLE OUTPUT,@XMLDOC
SELECT * FROM OPENXML(@HANDLE, '/List/Entry', 2)
WITH ([id] int, lastName nvarchar(100))
EXEC sp_xml_removedocument @HANDLE
till this all working fine but i don't know how to relate the id information with the main data and how to get the output
as well as if i want to add this information into two table (tblmainTable and idDetailsTable) how i will manage it's relation.
tblmainTable Record
id LastName
1 abc
idDetailsTable Records
uid id idType idNumber idCountry
1 1 pqr 1001 INDIA
1 2 xyz 2001 USA
please help me to come out of this.
thanks and regard's in advance
Sasmi
modified on Tuesday, March 15, 2011 3:35 AM
|
|
|
|
|
Hi all,
I was wondering if it is possible to get up-to-second data from a database without querying for it.
I want a lock-mechanism that prevents people from editing specific rows on a windows form that have been edited by other users on other computers. The only way they are connected is by database.
An 'easy' solution would be to have a DB table that holds a boolean wether the current row is being edited and then have the application 'poll' for changes every few seconds. But there will be a lot of polling for a whole lot of nothing...
So is there any other smart way to do this?
Thanks.
It's an OO world.
|
|
|
|
|
Hi,
There are really many ways to do this, for example:
- If you want to check that no-one has made modifications after reading the data include optimistic locking. In this case include a column into the table which is modified every time the row is changed and include the value from this column in UPDATE/DELETE statements.
- If you want to prevent changes from another session after you have read the data until you release it, then take advantage of the pessimistic locks, i.e. lock the row the user is editing for example with a simple update. However this is typically not the best solution since transactions should never include user conversations.
But in any case do not include edit-state information in the table. In order to do that you would have to commit the change into to database and you would be in trouble in no time since you would have 'locked' rows left in the db.
You didn't mention the DB vendor, but for example in SQL Server there's a special datatype rowversion (timestamp in older versions) for optimistic locking.
|
|
|
|
|
Thanks for the reply.
That's already some useful information that I will certainly look into. But I do not see how it fixes the following problem yet.
The problem is that user A and user B both load the same data (into a WinForms app). Now while the data for both users is loaded user A starts to edit. At this time user B should automatically see that the row is being edited without the need of refreshing/reloading the screen (not manually anyway).
I am using SQL2008.
It's an OO world.
|
|
|
|
|
|
Wow, certainly going to check that out this weekend (maybe sooner)! Thanks
It's an OO world.
|
|
|
|
|
You should have added "not urgent at all" to your subject line.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
That was hilarious
|
|
|
|
|
I never said it was urgent...
But the quest for knowledge always has a top priority!
It's an OO world.
|
|
|
|
|
No problem
|
|
|
|
|
Naerling wrote: I was wondering if it is possible to get up-to-second data from a database
without querying for it.
Usually not a good idea.
Naerling wrote: I want a lock-mechanism that prevents people from editing specific rows on a
windows form that have been edited by other users on other computers. The only
way they are connected is by database.
Definitely not a good idea for that.
Do you have a real business case to support the need for this. Not some hypothetical that you made up but a real case that one or more business people told you would happen?
Naerling wrote: So is there any other smart way to do this?
A database lock. But it isn't easy to get it correct especially when dealing with all possible error scenarios.
And it is pointless and a significant waste of time unless you have a real business case that requires it.
|
|
|
|
|
Thanks for your answer.
A rather big client of my company is currently using an application where they load many rows into many columns and many people are seeing and editing them. This was their request, and they want to be able to see when someone else is editing a row.
We are currently just checking the database every 10 seconds, but this seems like the least best solution for the problem.
The case does not really matter. Wether the form shows data on the wether or on actors playing in movies is not really a concern. As long as a row cannot be edited by anyone except the person who edited first.
Telling this customer that this is not a good idea is not a good idea... We do it their way, period
I guess it is good luck we do not have to tell them HOW we do it, as long as we do it
It's an OO world.
|
|
|
|
|
Naerling wrote: and they want to be able to see when someone else is editing a row.
That is a pretty specific request.
If that is the exact request then you have no choice but to
1. Track the user when they are in edit mode.
2. Mark the row as being in the editing process.
Given that you will also have other concerns such as
A. What do you do if the user goes to lunch or on vacation?
B. What happens if the users application crashes?
C. What if someone else must make an immediate update when another person who is unavailable is editing it.
D. What is the exact notification process.
The specifics of how you implement the solution depends on the architecture but writing a value to the database is one possible way to solve 2 above. It however solves only that.
Naerling wrote: Telling this customer that this is not a good idea is not a good idea... We do
it their way, period
At least as long as they are willing to pay for it and it does not impact your other customers.
|
|
|
|
|
If you use locking, that may block the system:
User starts to edit a record, then it's lunch-time and he leaves without saving the record
If you use a flag, that even may block the system:
User starts to edit a record, the flag is written to the special DB-Table, then his station went down (power failure etc.)
The only universal DB-way is - as others mentioned - to either have a 'version'-count or a 'last edited' timestamp, and if a user wants to edit a record, read that column and compare with the original value.
As long as a edited record isn't UPDATEd in the database, the DB-Server isn't (and shouldn't be) involved.
I use a mailslot for this purpose; every station listens to this, and if a record is about to be edited, the station in question sends a broadcast with the primary key of this record, so every station knows.
Also every station broadcasts a 'living' message every 5 seconds, and every station has a list of all other stations to maintain the 'living' state.
So if one station dies, all other stations will know 5 seconds later and can easily kill the 'editing' information of the died station.
With this the is even a in-application chat possible.
(Sorry for my bad english, I'm from germany and not so experienced using your lang...)
|
|
|
|
|
Hi all, I'm wondering how many guys here are experiencing the MySql bug which just popped out with the installation of VS2010 SP1, reported here:
http://bugs.mysql.com/bug.php?id=60404[^]
Sadly I'm one of them, and I'd like to know if it's just me and some other guys (in this case I'd try a fresh reinstall), or this is a general bug which must be addressed. Thanks!
|
|
|
|
|
hello guys... I wrote an application inwhich I use the user 'sa' to do some small transactions, in Sql Server. Now when I run same program on some other computer, this programs shows some debug error saying
Debug Error !
This application has requested the Runtime to terminate in its unusual way. Please contact the applications support team for more information.
Now since I have run this small EXE on my laptop, so I know nothing is wrong with my program. There got to be something wrong with my user creation. So how to create user 'sa' properly...thnx
|
|
|
|
|
Hi,
You don't create sa user. sa is created byt the SQL Server when you choose mixed security mode during the installation or later via instance properties. So sa is a special user defined when SQL Server authentication is enabled, kind like administrator in windows.
[Added]
To change the authentication mode, for example: http://msdn.microsoft.com/en-us/library/ms188670.aspx[^]
The need to optimize rises from a bad design.My articles[^]
modified on Saturday, March 12, 2011 12:44 PM
|
|
|
|
|
overloaded Name wrote: There got to be something wrong with my user creation
I suppose that is possible if
1. Your wrote your program in C/C++
2. You have a bug (or several) in your code.
Supposing that the first is true then when you attempt to interact with the database you will get error information back (if your code doesn't have bugs.) So reporting that information is useful. And if that error is such that the app can no longer proceed then the application should gracefully exit.
|
|
|
|
|
In my company we are using a SQL Server 2005 Database to manage all our client and job records. However this database was originally designed by someone in the company who didn't know much about the database. We are reaching a point in our growth were this database needs to be converted to a relational database. So I copied the database locally to work with it. I used Access (2010) to analyze the database and set up the tables. When I go through the wizard I get to the last step where it shows all the data that seems to be similar so I can select what each record should be (correcting typographical errors step). This will eliminate duplicate client names, site names, etc. However there are over 10,000 records in the database, and to go through this manually would take a long time, as it seems there is no way to start it and finish it at a later time. Does anyone have an recommendation on how I can go about making this flat database into a relational database relatively easily? There is approximately between 16,000 and 17,000 records. Thanks in advanced for any help or suggestions.
modified on Friday, March 11, 2011 11:48 PM
|
|
|
|