piratepatrol
asked on
I Need the Rowcount from the Command Object
Hi folks,
I have a stored procedure that performs a SELECT query. I call it with the command object like this:
Set rs = cmd.Execute
Can anyone show me how I can retrieve the row count? I was able to get it using @@rowcount in the stored procedure, but it only worked if I executed cmd without setting it to rs. I know I can do an rs.Open and get a record count, but I want to use the command object in this case. Can anyone help me?
Thanks, folks.
Jazon
I have a stored procedure that performs a SELECT query. I call it with the command object like this:
Set rs = cmd.Execute
Can anyone show me how I can retrieve the row count? I was able to get it using @@rowcount in the stored procedure, but it only worked if I executed cmd without setting it to rs. I know I can do an rs.Open and get a record count, but I want to use the command object in this case. Can anyone help me?
Thanks, folks.
Jazon
you can create an OUTPUT parameter and return the value through it.
create procedure sp_something @nRowCount int
--do your work
SET @nRowCount = @@rowcount
in your asp code
cmd.Parameters.Append cmd.CreateParameter("@nRow Count", adInteger, adParamOutput)
set rs = cmd.execute
'get the value back from output parameter
intRowCount = cmd.parameters("@nRowCount ").value
--do your work
SET @nRowCount = @@rowcount
in your asp code
cmd.Parameters.Append cmd.CreateParameter("@nRow
set rs = cmd.execute
'get the value back from output parameter
intRowCount = cmd.parameters("@nRowCount
ASKER
That's exactly what I did, but I get a blank or null for row count. I can only get the row count when I do
cmd.Execute
instead of
Set rs = cmd.Execute
Our company server runs NTS 4.0.
Please help! :)
cmd.Execute
instead of
Set rs = cmd.Execute
Our company server runs NTS 4.0.
Please help! :)
does the sp return the proper count when you run it from query analyser like
declare @count int
exec sp_something @count OUTPUT
select @count as RowCount
declare @count int
exec sp_something @count OUTPUT
select @count as RowCount
just double checking, you used this constant when you created the parameter in the command object "adParamOutput"
and had the keyword OUTPUT in your sp
and had the keyword OUTPUT in your sp
one other thing, if you are using the constants, then you need to include adovbs.inc at the top of your asp page.
ASKER
Yeah, I did all of that. It works in Query Analyzer, but not in ASP when I do a
Set rs = cmd.Execute
Any other thoughts?
Set rs = cmd.Execute
Any other thoughts?
can I see the part of your code dealing with the cmd object and the sp?
ASKER
Here you go...
With cmd
.ActiveConnection = cn
.CommandText = "myprocedure"
.CommandType = adCmdStoredProc
.Parameters.Append = .CreateParameter("@TheCoun t", adInteger, adParamOutput)
Set rs = .Execute
i = .Parameters("@TheCount")
End With
Response.Write i
_______________________
CREATE PROCEDURE myprocedure
(
@TheCount INT OUTPUT
)
AS
SELECT * FROM Titles
SET @TheCount = @@rowcount
RETURN @TheCount
________________________
What am I doing wrong?
With cmd
.ActiveConnection = cn
.CommandText = "myprocedure"
.CommandType = adCmdStoredProc
.Parameters.Append = .CreateParameter("@TheCoun
Set rs = .Execute
i = .Parameters("@TheCount")
End With
Response.Write i
_______________________
CREATE PROCEDURE myprocedure
(
@TheCount INT OUTPUT
)
AS
SELECT * FROM Titles
SET @TheCount = @@rowcount
RETURN @TheCount
________________________
What am I doing wrong?
Command.Execute will return Server Cursor Recordset.
You need to specify a recordset with Client Curosr before execute the command
Suppose you have a command object "cmd" with ActiveConnection specified already.
Set rs=new Adodb.Recordset
rs.CursorLocation=adUseCli ent 'Use 3 if u are using ASP
rs.Open cmd
Msgbox rs.RowCount
You need to specify a recordset with Client Curosr before execute the command
Suppose you have a command object "cmd" with ActiveConnection specified already.
Set rs=new Adodb.Recordset
rs.CursorLocation=adUseCli
rs.Open cmd
Msgbox rs.RowCount
try creatin your procedure as
CREATE PROCEDURE myprocedure(@TheCount INT OUTPUT)
AS
begin
SELECT * FROM Titles
SET @TheCount = @@rowcount
end
I have removed the return statement
CREATE PROCEDURE myprocedure(@TheCount INT OUTPUT)
AS
begin
SELECT * FROM Titles
SET @TheCount = @@rowcount
end
I have removed the return statement
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.