|
I have a Stored Procedure with one input parameter and one
output parameter.
I create a SQLCommand for a Stored Procedure
I add parameter1 with direction input
I add parameter2 with direction output
I add parameter 1 and paramter2 to the Cmd's parameter Collection
I assign an input value to parameter1
I invoke the command's ExecuteReader() and try to
output the result(Parameter2) via response.write
I get a blank?
ps:
1. Procedure works on Query Analyzer
2. At the very end of code I verify two parameter are in
the Paramters collection.
|
|
|
|
|
Try assigning a value to the output parameter and see if it changes. Make it in/out and change the SP to store the incoming value somewhere so you can see if it's getting there OK. Check your spelling.
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Christian:
Thanks for the quick reply. Although I coded as an output while in Query Analyzer, it actually stores it as input/ouput, since while retrieving the output you have to read it into a variable.My spelling must be OK, since no exceptions are raised. I will diagnose some more, but I will get there. I just do not want to reinvent the wheel.
Is 'Command.ExecuteReader' the correct way?
The above is invokation is OK for a stored procedure with one input returning a number of rows of result.
mysorian
|
|
|
|
|
Here's a snippet of my code that does what you're trying to do:
SqlCommand cmd = new SqlCommand("SetTrackThumbNail", Connection);<br />
cmd.CommandType = CommandType.StoredProcedure;<br />
cmd.Parameters.Add("@thumbNailPath", thumbNailPath);<br />
cmd.Parameters.Add("@artistName", artistName);<br />
cmd.Parameters.Add("@trackID", trackID);<br />
cmd.Parameters.Add("@thumbID", -1);<br />
cmd.Parameters["@thumbID"].Direction = ParameterDirection.Output;<br />
<br />
cmd.ExecuteNonQuery();<br />
<br />
return (int) cmd.Parameters["@thumbID"].Value;
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Christian:
Thanks a lot. Actually, I finally made it work with ExecuteReader()method of the command. What happens actually, is that there is no streaming data and you cannot use the DataReader's Read(). There is nothing to read. However, you may just read out the Output parameter's value. I will try if the ExecuteNonQuery() works as well, as nothing is returned, but everything is contained.
Thanks
jay
|
|
|
|
|
I have a bizzare problem with an SQL query I am trying to build. The problem is, I have a query with a conditional WHERE EXISTS statement that modifies every value in my table, but the SELECT part of the statement returns only the correct, single instance.
This is done in access, in VB, and any help would be greatly appreciated, the queries are listed below.
This select statement returns 1 instance:
SELECT SubCategory.SubCategoryDesc
FROM Category
INNER JOIN SubCategory ON Category.CategoryKey = SubCategory.CategoryKey
WHERE ((Category.CategoryDescription)= GetCurrCategor())
AND ((SubCategory.SubCategoryDesc)= str_Old)
But this update command turns every entry in my table into str_New:
UPDATE SubCategory
SET SubCategory.SubCategoryDesc = str_New
WHERE EXISTS (SELECT SubCategory.SubCategoryDesc
FROM Category
INNER JOIN SubCategory ON Category.CategoryKey = SubCategory.CategoryKey
WHERE ((Category.CategoryDescription)= GetCurrCategor())
AND ((SubCategory.SubCategoryDesc)= str_Old))
Any ideas why this occurs? It's driving me NUTS!
Cheers
Cata
|
|
|
|
|
Well, the exists clause will return true all the time, so every row is updated.
I don't know enough about the Access subvariant of SQL to provide a definitive solution, but I'd have thought that this would work:
UPDATE SubCategory
SET SubCategory.SubCategoryDesc = str_New
FROM Category
INNER JOIN SubCategory ON Category.CategoryKey = SubCategory.CategoryKey
WHERE ((Category.CategoryDescription)= GetCurrCategor())
AND ((SubCategory.SubCategoryDesc)= str_Old)
otherwise, this may work
UPDATE SubCategory
SET SubCategory.SubCategoryDesc = str_New
WHERE SubCategory.CategoryKey IN
(
SELECT SubCategory.CategoryKey
FROM Category
INNER JOIN SubCategory ON Category.CategoryKey = SubCategory.CategoryKey
WHERE ((Category.CategoryDescription)= GetCurrCategor())
AND ((SubCategory.SubCategoryDesc)= str_Old)
)
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
Had another crack with those two, but still getting errors.
Type Mismatch on JOIN expression:
str_SQL = "UPDATE SubCategory SET SubCategory.SubCategoryDesc = '" & str_New & "' " _
& "WHERE SubCategory.CategoryKey IN " _
& "(SELECT SubCategory.SubCategoryDesc FROM SubCategory " _
& "INNER JOIN Category ON Category.CategoryKey = SubCategory.CategoryKey " _
& "WHERE ((Category.CategoryDescription)= '" & GetCurrCategory & "') " _
& "AND ((SubCategory.SubCategoryDesc)= '" & str_Old & "'))"
Missing Operator in Query "FROM Category ..... = Subcategory.CategoryKey":
str_SQL = "UPDATE SubCategory " _
& "SET SubCategory.SubCategoryDesc = '" & str_New & "' " _
& "FROM Category " _
& "INNER JOIN SubCategory ON Category.CategoryKey = SubCategory.CategoryKey " _
& "WHERE ((Category.CategoryDescription) = '" & GetCurrCategory & "') " _
& "AND ((SubCategory.SubCategoryDesc)= '" & str_Old & "')"
I've played around with it, but still can't get it to work. Any more ideas?
Cheers
Cata
|
|
|
|
|
Never mind
Thanks for the help, it was pretty much spot on.
Needed to be using SubCategoryKey rather than the CategoryKey. One was specific, the other one was general.
Cheers again
Cata
|
|
|
|
|
No worries, glad to help
Christian
I have several lifelong friends that are New Yorkers but I have always gravitated toward the weirdo's. - Richard Stringer
|
|
|
|
|
There is no correlation between the queries in the update statement. No matter which row the SQL Server tests, the EXISTS statement will always resolve to true and therefore, update the row.
I don't think the EXISTS statement is a good solution for this problem (although you could make it work). Try the IN statement:
UPDATE
SubCategory
SET
SubCategory.SubCategoryDesc = str_New
WHERE
SubCategory.SubCategoryDesc IN
(SELECT
SubCategory.SubCategoryDesc
FROM
Category
INNER JOIN
SubCategory
ON Category.CategoryKey = SubCategory.CategoryKey
WHERE
((Category.CategoryDescription)= GetCurrCategor()) AND
((SubCategory.SubCategoryDesc)= str_Old))
|
|
|
|
|
Hi,
In an excel sheet, I have a column (text format), but if I try open this using ODBC driver, this column is open as double data type. Exist any way to change the data type for each column?
I don't want to use a TEXT function from excel, this resolve my problem, but I want another way to chnage it.
Thank you.
ALX
|
|
|
|
|
What am I doing wrong? I do not get any output
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
OleDbConnection1.Open()
OleDbDataAdapter1.SelectCommand.CommandText = "SELECT Location, HotelID FROM Hotel"
OleDbDataAdapter1.SelectCommand.ExecuteNonQuery()
Do
ComboBox1.Items.Add(OleDbDataAdapter1.SelectCommand.CommandText)
Loop
OleDbConnection1.Close()
End Sub
|
|
|
|
|
skicrud wrote:
What am I doing wrong? I do not get any output
Can you tell use, what do you want to do?
A thousand mile of journey, begin with the first step.
APO-CEDC
Save Children Norway-Cambodia Office
|
|
|
|
|
Dont exactly know what you are trying to do here but shouldn't you instead of putting executeNonQuery() put in executeReader()??
I dont know what the do loop is for either??
Try filling a datatable or dataset with you adapter i.e oledbDataAdapter1.fill(myDatatable)
then use your datatable to fill your comboBox ie.
comboBox1.datasource = myDataTable
comboBox1.valueMember = "hotelID"
comboBox1.displayMember = "Location"
ComboBox1.DataBind()
Something like that anyways.
|
|
|
|
|
Hi, guys.
This is an urgent problem that I can only conncet to MSDE 2000(release A, not sp3 or sp3a) from local computer but can not connect to the one running on remote PC. Every time such information is prompted:"SQL Server doesn't exist or access denied."
By the way, the SQL Server service manager running on my PC can start or stop MSDE on both local and remote PC.
Help please. Thanks.
vigorous
|
|
|
|
|
wk_vigorous wrote:
This is an urgent problem that I can only conncet to MSDE 2000(release A, not sp3 or sp3a) from local computer but can not connect to the one running on remote PC
What is the version of your windows operating system? Does your windows install any service pack?
wk_vigorous wrote:
SQL Server doesn't exist or access denied
Try to check the information from here[^] and google.
wk_vigorous wrote:
This is an urgent problem that I can only conncet to MSDE 2000(release A, not sp3 or sp3a) from local computer but can not connect to the one running on remote PC
Try to check the connection library.[^]
A thousand mile of journey, begin with the first step.
APO-CEDC
Save Children Norway-Cambodia Office
|
|
|
|
|
The operating system is xp sp2. I thought maybe the firewall block relevant port but even i close the firewall i still can't connet to MSDE.
vigorous
|
|
|
|
|
This is probably an SP2 issue. Have a look at MS KB 841249[^] - How to configure Windows XP Service Pack 2 (SP2) for use with SQL Server.
Another problem I have seen is if all protocols are disabled. Run the server network utility (svrnetcn.exe ), and make sure you have at least one protocol in the "Enabled protocols" list.
http://www.trinet.co.uk/kb.asp?kbid=25[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
Thank you very much.
It's because the protocol is disabled. Now MSDE could be connected after enable the protocol.
vigorous
|
|
|
|
|
Hi there guys,
Have a couple of issues to do with SQLXML on SQL2K...
Firstly, have created a new stored procedure that I wish to expose as a SOAP method. Have added the sproc and can execute within QA, but when I come to add it to the virtual names in SQLXML, when browsing the list of available sprocs, it's not there....have tried all sorts of ways to "force" it to appear in the lsit, but to no avail....On the one occasion I did manage to get it sorted, when calling the method, my app just hung. Completely. Totally....any ideas?
Second probelm seems to be that with an OCX on an ASP page, when calling ANY SOAP method exposed by SQLXML, the session is destroyed, and hence all the session variables....again - any ideas?
Cheers guys.....
"Now I guess I'll sit back and watch people misinterpret what I just said......"
Christian Graus At The Soapbox
|
|
|
|
|
Sorry, could not think of a better subject line for this. I need an int stored in my table that is sequential, but will fill in any missing numbers. By this I mean if I have 4 records, these will be numbered 1,2,3,4. If I delete row 3, the next row to be inserted should use row 3. I just need some advice on how to do this.
|
|
|
|
|
I never code this style but this is what I just think and express my concept to you.
toticow wrote:
if I have 4 records, these will be numbered 1,2,3,4. If I delete row 3, the next row to be inserted should use row 3.
First make sure that you have have the table structure and the first field of your table is set to number (data type) and order it by ascending. When you delete any record from your database, you have to requery your table and order the first field. Then you have to count the total amount of your record in the database, after that make a loop from the first row to the second, third... until the end of row (the amount of loop process is base on the total number of record in the database). And in the each loop process you have to change the value of the first field to match the amount of loop proces. This might help you to solve the problem, if you still have the problem I will try to do it and post the code for your.
A thousand mile of journey, begin with the first step.
APO-CEDC
Save Children Norway-Cambodia Office
|
|
|
|
|
Hi, firstly I agree with you about coding in this style. I always use auto numbers. This table in fact has one, but this other id is actualy for a memory location. We have a device with a limited amount of memory, that can only be written to by memory location. This table will always be small, less than 100 records, but deletions and additions will occur, which prevent me using the primary key. I am probably wrong, but I thought that this would be the best way to do it. I am in the process now of trying your suggestion. Thank you
|
|
|
|
|
You could create a second table which contains a list of deleted numbers. If the table is empty the the next number you use is MAX(numberColumn)+1 .
In order to populate the deleted numbers table you can create a delete trigger on the original table and insert the relevant row. When you are inserting a new record just take a number from the deleted numbers table and use that - remember to remove it from the deleted numbers table. You could create an insert trigger to do this for you.
However, this will still leave gaps in your sequence if you delete a row and don't insert one afterwards.
Do you want to know more?
|
|
|
|