How To Get Output Parameters From SQL Server Using ASP
Oct 8, 2010I had an sqldatasource. I had set its parameter as follows
[Code]....
I had an sqldatasource. I had set its parameter as follows
[Code]....
[Code]....
When I want to get the output values its okay but I also want returning a table as a result data.But Datareader has no rows.is it possible if I want a returning query result and multiple output values togather ?I wrote a test above.I can get output values as sqlparameters. But Datareader attached to a Gridview is empty.can you detect whats wrong here and it doesnt return a query result.So stored procedure is not standart or ı am doing something wrong.this doesnt raise any exception.but not returning any data.
[code]....
I have a stored procedure that works fine for classic asp, but how can I get my output parameters data back from in /MVC 2 / linq/ entities framework model . I have inported the function also, but when i try to code it i dont get results ...i know this is a matter of lack of / knowledge or exmple because i have been scouring the web for it and cannnot find into that accually works.
here is the stored proc.
[Code]....
Here was the one of the few tries I did:
[Code]....
but it executes fine does not give me an error, but also does not return the info i need to the viewmodel
I keep seeing stuff about "ref" on the net but "ref" shows " arbument # should not be passed with the ref keyword.
So i am not sure if there is a problem with the model, or with my understanding this, Now for your info I can do the same step with returning a dataset from a stored procedure fine, but I dont want a data set I just want excatly the data in the output parameters from the stored procedure.
I have never used stored proc ouput parameters i want to know what is the use of using output parameters?If possible provide me some code.
View 10 RepliesI've modified an existing strored procedure. It originally had one ouput parameter in the stored proc and it was set up as follows in the c# code that called it:
cmd.Parameters.Add("@Var1Param", SqlDbType.BigInt);
if (Var1 == 0)
cmd.Parameters["@Var1"].Value = DBNull.Value;
else
cmd.Parameters["@Var"].Value = Var1;
cmd.Parameters["@Var1"].Direction = ParameterDirection.InputOutput;
cmd.ExecuteNonQuery();
// Get Var1
Var1= dataMorph.ToInt64(cmd.Parameters["@Var1"].Value.ToString());
Just to clarify, this parameter was declared as OUTPUT in the stored proc but as inputoutput in the C# code. This worked fine. I have added another parameter to the same stored procedure and I want to retrieve both from the C# code. The C# code now is as follows:.................................
I have a webform which inserts data into a sql table successfully (form is bound to SqlDataSource1). The problem I have is that I need to populate a number of the DataFields based on an entered Ref number from a button click. The Ref is passed into a Stored Procedure as the only input parameter, all other params are output params. The procedure seems to run fine, but I can not seem to display any of the output params in my form. Here is my sproc:
PROC AUMS_RETURN_LOOKUP
(
@REF
@COMPANY
@SALUTATION
@FORENAME
@SURNAME
@ADDRESS1
@ADDRESS2
@ADDRESS3
@ADDRESS4
@ADDRESS5
@ADDRESS6
@CITY
@COUNTRY
@POSTCODE
BIGINT,
char(10)
OUTPUT,
char(20)
OUTPUT,
char(50)
OUTPUT,
char(50)
OUTPUT,
char(50)
OUTPUT,
char(50)
OUTPUT,
char(50)
OUTPUT,
char(50)
OUTPUT,
char(50)
OUTPUT,
char(50)
OUTPUT,
char(30)
OUTPUT,
char(30)
OUTPUT,
char(20)
OUTPUT
)
AS
SET
NOCOUNT ON
SELECT
@SALUTATION
@FORENAME
@SURNAME
@ADDRESS1
@COMPANY =
rtrim([COMPANY]),
=
RTRIM([SALUTATION]),
=
RTRIM([FORENAME]),
=
RTRIM([SURNAME]),
=
RTRIM([ADDRESS1]),
@ADDRESS2 =
RTRIM([ADDRESS2]),
@ADDRESS3 =
RTRIM([ADDRESS3]),
@ADDRESS4 =
RTRIM([ADDRESS4]),
@ADDRESS5 =
RTRIM([ADDRESS5]),
@ADDRESS6 =
RTRIM([ADDRESS6]),
@CITY =
RTRIM([CITY]),
@COUNTRY =
RTRIM[COUNTRY]), @POSTCODE
=
RTRIM([ZIP])
FROM
HEADER
WHERE
REF = REF
Here is my code:
Protected
Sub Button1_Click1(ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Dim Company
As TextBox =
DirectCast(FormView1.FindControl("TextBox9"), TextBox)
Dim Forename
As TextBox =
DirectCast(FormView1.FindControl("TextBox10"), TextBox)
Dim Surname
As TextBox =
DirectCast(FormView1.FindControl("TextBox8"), TextBox)
Dim TESTREFTextBox
As TextBox =
DirectCast(FormView1.FindControl("TxtBox_ref"), TextBox)
Dim TESTREF = Convert.ToInt64(TESTREFTextBox.Text)
Dim CompanyText = Company.Text
Dim strCon
As
String = ConfigurationManager.ConnectionStrings("ConnString").ConnectionString
Dim Con
As
New SqlConnection(strCon)
Dim Cmd
As SqlCommand
Con.Open()
Cmd = New SqlCommand
Cmd.CommandText = "RETURN_LOOKUP"
Cmd.CommandType = CommandType.StoredProcedure
Cmd.Parameters.Add("@REF", SqlDbType.Int)
Cmd.Parameters("@REF").Value = TESTREF
Cmd.Parameters.Add("@COMPANY", SqlDbType.VarChar, 15)
Cmd.Parameters("@COMPANY").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@SALUTATION", SqlDbType.VarChar, 20)
Cmd.Parameters("@SALUTATION").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@FORENAME", SqlDbType.VarChar, 50)
Cmd.Parameters("@FORENAME").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@SURNAME", SqlDbType.VarChar, 50)
Cmd.Parameters("@SURNAME").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@ADDRESS1", SqlDbType.VarChar, 50)
Cmd.Parameters("@ADDRESS1").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@ADDRESS2", SqlDbType.VarChar, 50)
Cmd.Parameters("@ADDRESS2").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@ADDRESS3", SqlDbType.VarChar, 50)
Cmd.Parameters("@ADDRESS3").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@ADDRESS4", SqlDbType.VarChar, 50)
Cmd.Parameters("@ADDRESS4").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@ADDRESS5", SqlDbType.VarChar, 50)
Cmd.Parameters("@ADDRESS5").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@ADDRESS6", SqlDbType.VarChar, 50)
Cmd.Parameters("@ADDRESS6").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@CITY", SqlDbType.VarChar, 30)
Cmd.Parameters("@CITY").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@COUNTRY", SqlDbType.VarChar, 30)
Cmd.Parameters("@COUNTRY").Direction = ParameterDirection.Output
Cmd.Parameters.Add("@POSTCODE", SqlDbType.VarChar, 20)
Cmd.Parameters("@POSTCODE").Direction = ParameterDirection.Output
Cmd.Connection = Con
"@REF", SqlDbType.Int)"@REF").Value = REF"@COMPANY",
SqlDbType.VarChar, 15)"@COMPANY").Direction = ParameterDirection.Output"@SALUTATION",
SqlDbType.VarChar, 20)"@SALUTATION").Direction = ParameterDirection.Output"@FORENAME",
SqlDbType.VarChar, 50)"@FORENAME").Direction = ParameterDirection.Output"@SURNAME",
SqlDbType.VarChar, 50)"@SURNAME").Direction = ParameterDirection.Output"@ADDRESS1",
SqlDbType.VarChar, 50)"@ADDRESS1").Direction = ParameterDirection.Output"@ADDRESS2",
SqlDbType.VarChar, 50)"@ADDRESS2").Direction = ParameterDirection.Output"@ADDRESS3",
SqlDbType.VarChar, 50)"@ADDRESS3").Direction = ParameterDirection.Output"@ADDRESS4",
SqlDbType.VarChar, 50)"@ADDRESS4").Direction = ParameterDirection.Output"@ADDRESS5",
SqlDbType.VarChar, 50)"@ADDRESS5").Direction = ParameterDirection.Output"@ADDRESS6",
SqlDbType.VarChar, 50)"@ADDRESS6").Direction = ParameterDirection.Output"@CITY",
SqlDbType.VarChar, 30)"@CITY").Direction = ParameterDirection.Output"@COUNTRY",
SqlDbType.VarChar, 30)"@COUNTRY").Direction = ParameterDirection.Output"@POSTCODE",
SqlDbType.VarChar, 20)"@POSTCODE").Direction = ParameterDirection.OutputDim
result As
String
Cmd.ExecuteNonQuery()
result = Cmd.Parameters("@COMPANY").Value
CompanyText = result
While the SqlDataReader is being used, the associated SqlConnection is busy serving the SqlDataReader, and no other operations can be performed on the SqlConnection other than closing it. This is the case until the Close method of the SqlDataReader is called. For example, you cannot retrieve output parameters until after you call Close.
If the above claim is true, then why is the following method able to retrieve a value from output parameter before the reader is closed:
public int Something()
{
using (SqlConnection con = new SqlConnection(this.ConnectionString))
{
SqlCommand cmd = new SqlCommand("some_procedure", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ID", SqlDbType.Int).Direction = ParameterDirection.Output;
con.Open();
cmd.ExecuteReader();
return (int)cmd.Parameters["@ID"].Value;
}
}
You can reset the CommandText property and reuse the SqlCommand object. However, you must close the SqlDataReader before you can execute a new or previous command.
Why must you close sqldatareader before you execute new command?
I have several VB.NET functions which pass and receive values from executed stored procedures using parameters. However, the latest method I am using seems to be a little too specific on the datatype and data length of the parameters for my liking (i.e.
LogActivityCommand.Parameters.Add("@strErrSource", SqlDbType.NVarChar, 300).Value = strErrSource). For example:
[code]....
If I end up changing the datatype and data length properties of the variables in my SQL stored procedures in the future, I am going to have to re-visit my VB code too and alter the parameter settings here as well.
i like to pass two i/p parameters to the SP and fetch 2 output parameters.This should done using simple ADO .NET code.
View 1 RepliesI have a question. How do we define date output parameters for a stored procedure?
before you answer,I should mention that I am not referring to the sql syntax definition ,which is @mydate datetime output.
This is ok,what i am asking is HOW DO I SPECIFY IT IN LINQ WHEN I NEED TO CALL THE STORED PROCEDURE IN THE SERVER SIDE CODE. I am repeating that I do I am not referring to the sql definition .
I have a stored procedure with the following structure:
[Code]....
i am trying to do: Parameters.Add("@ProfileHtml", SqlDbType.Text, MAX_TEXT).Direction = ParameterDirection.Output but i keep getting this error. MAX_TEXT is integer = 2147483647 Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter. Deprecated types are not supported as output parameters. Use current large object types instead.
View 4 RepliesHere is my stored proc
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
Create PROCEDURE [dbo].[sp_GetNextSeq] (
@p_NextSeqNo int = NULL OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION
Generate Next Sequence Number
[code]...
First off, suggest better ways if you want rather than patch up this code. I am just starting this project and it is first time I have tried to code a web site so anything you suggest is very much welcomed. I have spent the last 2 and 1/2 days trying to find workable answers to this but none I have found and tried seem to fit. If needed I can email screens shots or code. I am trying to construct a website that will have the same main theme throughout as far as the header, navbars sitemap, and footer go. Naturally the content will vary from page to page. I want to use a single master page and css stylesheet for this main theme and I will change the content format as needed per page because each page may vary somewhat.
However, about 15 of the pages will all use the same format for their content and this format will differ from the rest of the site but the format of the main theme will stay the same. So I am trying to create a nested master page to use to format the just the content area for all these pages while retaining the main theme for the header, etc.. I believe I should use a separate css file with the nested master page to handle the formatting of the content areas for these 15 pages. I have code that looks like it works when viewed in web developer but design view but does not work when viewd through a browser (IE, Chrome, Firefox). So far I have the following done in web developer.
If it helps the code and screen shots follow. Master Page called "Parent.master". For all theme throughout site Nested Master Page called "Lab.master". For the 15 like pages Primary stylesheet file for main theme called "StylesheetNew.css" For site theme Secondary stylesheet file to syle the 15 like formatted pages. It is called Labmaster.css Labs.apsx file to use as first of the 15 like pages.
Finally screens shots from web developer and browser. Sorry try as I might I could not capture screenshots and put them into this post. The problem is that web developer shows all the area (many lines high) with gray background and with the XXX text that I want to allocate for content in the 15 pages. Yet all the browser show is one line of text o a white background followed by the footer. It looks like the LabStyleSheet works in Web Developer but not in a browser.
Parent.master
<%@ Master Language="VB" CodeFile="Parent.master.vb" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[URL]">
<html xmlns="[URL]">
<head id="ParentHeader" runat="server">
<title>HX5</title>
<asp:ContentPlaceHolder runat="server" id="headerPlaceHolder" />
<link href="~/StyleSheetNew.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="wrapper" >
<div id="Header" >
<table class="hdrtbl1" >
<tr>
<td id="hdrtd1" style="width:175px; height:100px;" >
<img id="logo" alt="Logo" src="../Images/logo.png" style="width: 136px; height: 87px" />
</td>
</tr>
</table >
<table class="hdrtbl2" >
<tr><td id="hdrtbl2td1"><b> Providing Professional Technical, Manangement and Business Solution</b></td></tr>
<tr><td id="hdrtbl2td2"> <b> Services since 2004 </b></td></tr>
<tr> <td id="hdrtbl2td3" align="center" ><img id="rdln" alt="RedLine" style=" height:3px;" src="../Images/RedLine.png" /></td></tr>
<tr><td id="hdrtbl2td4" > <b>Committed to Excellence In All We Do</b></td></tr>
</table>
</div>
<div id="navbardiv">
<ul id="topnav">
<li><a href="../pages/about.aspx" >About Us <img style=" border: none; " src="../Images/arrow-down.gif" /></a>
<!--Subnav Starts Here-->
<span>
<a style="font-weight:lighter; " href="#" >Who We Are </a> |
<a href="#">Locations</a> |
<a href="#">Business Classifications</a> |
<a href="#">Contact Us</a> |
</span>
</li>
<!--Subnav Ends Here-->
<li><a href="../pages/services.aspx">Services <img alt="arrow" style="border: none; " src="../Images/arrow-down.gif" /></a>
<!--Subnav Starts Here-->
<span>
<a style="font-weight:lighter; " href="#" >Capabilities</a> |
</span>
<!--Subnav Ends Here-->
</li>
<li><a href="#">Customers <img style=" border: none; " src="../Images/arrow-down.gif" /></a>
<span>
<a style="font-weight:lighter; " href="#" >Subnav Link</a> |
<a href="#">Customer Locations</a> |
<a href="../pages/labs.aspx">Labs</a> |
</span>
</li>
<li><a href="#">Careers <img style=" border: none; " src="../Images/arrow-down.gif" /></a>
<!--Subnav Starts Here-->
<span>
<a style="font-weight:lighter; " href="#" >Joining the HX5 Team</a> |
<a href="#">Current Opportunities</a> |
</span>
</li>
</ul>
</div>
<div id="subnavbar" >
<!-- <asp:SiteMapPath ID="SiteMapPath" runat="server">
</asp:SiteMapPath> -->
</div>
<div id="topContent" style="border-bottom:solid 1px #191970;">
<table>
<tr><td style="height:30px; width:900px;" >
<asp:ContentPlaceHolder id="TopPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
</table>
</div>
<!-- <div id="mainContent"> -->
<asp:ContentPlaceHolder id="MainPlaceHolder" runat="server" />
<!-- </div> -->
<!-- <div id="lowerContent"> -->
<asp:ContentPlaceHolder id="LowerPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
<!-- </div> -->
<div id="footerContent" style=" height:50px; width:900px; text-align: right; background-color: #ccc; ">
<span style=" font-family: Arial, Helvetica, sans-serif; font-size: xx-small; font-weight: bold; color: #000080; margin: 30px 20px 0px 0px;"> Copyright 2010 HX5, LLC All rights reserved</span></div>
</div>
</form>
</body>
</html>
Can any one please guide, how to bring this output.Below one is Sample Data
[Code]....
this is my script
SELECT * FROM
( SELECT 'OK' AS RESULT,'Done' AS MSG ) A
FOR XML RAW('COLLECTION'),ELEMENTS
the result would be
<COLLECTION>
<RESULT>OK</RESULT>
<MSG>Done</MSG>
</COLLECTION>
would it possible the output as this format ( to add extra tag <H></H>)
<COLLECTION>
<H>
<RESULT>OK</RESULT>
<MSG>Done</MSG>
</H>
</COLLECTION>
[Code]....
Above is dynamic sql and when it is executed by sp_executesql then I got output as as xml. If I want to store that XML in a variable. So then what I need to add in my tsql script.
I am trying to return a sum total figure from a stored procedure by using the output parameter. When I execute the stored procedure in SQL it returns 0 or a valid number like it should but when I try to use the webmethod listed below I keep getting a 0 even when I should get a valid number back.
ALTER PROCEDURE spGetCustSum
@CustomerCode CHAR(4),
@Sum AS INTEGER OUTPUT
AS
BEGIN......
Am I missing a step or have some wrong code in this method?
how do I add an output parameter to a Stored Procedure that returns a code or string to the calling app
View 1 Repliesusing sql server 2005.I need to output the results of a query to a csv file, how should i do this?
View 2 Repliesi want to get first picture of any album in photo table. i want get output table for show to the datalist control.i need to get albumid in output
so i create a sproc similar this:
create PROC USP_GETFirstPhoto
@ALBUMID INT OUTPUT,
@CATEGORY NVARCHAR(50) OUTPUT ,
@CAPTION NVARCHAR(50) OUTPUT
AS
SELECT @ALBUMID = A.AlbumID,@CATEGORY=A.Category,@CAPTION=TMP.Caption FROM Albums A
CROSS APPLY
( SELECT top 1 * FROM Photos
WHERE AlbumID=A.AlbumID
)TMP
order by A.AlbumID
DECLARE @x INT,@y NVARCHAR(50),@z NVARCHAR(50)
EXEC USP_GETFirstPhoto @x output,@y output,@z output
select @x,@y,@z
but when i exec this proc i have a recorde not a result set
with this query i have resultset
SELECT * FROM Photos
CROSS APPLY (
SELECT TOP 1 AlbumID FROM Photos
GROUP BY AlbumID)TMP
I'm just now getting familiar with the .NET chart controls. I'd like to know if I can save the contents of a chart as a .jpg or similar file on the server.
I would like to be able to have the user download the file or display it to the user in a non-.net page.
I am using SQLCMD to execute a script and then output the results to a csv file. Is it possible to name the output file with a timestamp each interval that it is executed (such as every 30 minutes that the command is executed to timestamp like "output 10/25/10 830.csv"?
View 2 RepliesI have written SP like this to get my required output.create procedure [dbo].[usp_gl_ProjectBudgets] set nocount on begin tran declare @SPError int
declare @y1 varchar(20)
declare @y2 varchar(20)
declare @y3 varchar(20)
declare @y4 varchar(20)
declare @y5 varchar(20)
declare @Glink int
declare @i int
set @y1='Year1'
set @y2='Year2'
set @y3='Year3'
set @y4='Year4'
set @y5='Year5'
set @Glink=1
set @i=1
[code]...
We had a simple Gridview that displayed a column list as Linkbuttons but we now need to display three columns as one, so I wrote a simple stored procedure to do it. However, the output in the Gridview shows duplicates and is not in order even though I specifySELECT DISTINCT in the result select as shown below.
ALTER PROCEDURE [dbo].[GetGeneralAction]
Add the parameters for the stored procedure here
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #TempTbl (GeneralAction varchar(300) )
INSERT INTO #TempTbl (GeneralAction)
SELECT [General Action]
FROM [dbo].[Formulary2011]
INSERT INTO #TempTbl (GeneralAction)
SELECT [General Action2]
FROM [dbo].[Formulary2011]
[code]...