Tag: 存储过程

使用SqlQuery处理存储过程的多个结果

我有一个存储过程,它返回一组多个结果(两个表)。 我这样调用存储过程: var result = context.Database.SqlQuery( “exec [dbo].[GetReferrer] @StartDate, @EndDate, @Source”, this.CreateInParam(“@StartDate”, SqlDbType.DateTime, startDate), this.CreateInParam(“@EndDate”, SqlDbType.DateTime, endDate), this.CreateInParam(“@Source”, SqlDbType.SmallInt, eventSourveVal)).ToArray(); 我的RefererStatisticResult包含两个List 属性,用于结果集,但调用后列表为空。 我该如何处理结果集? 是否可以使用SqlQuery?

使用大型CLOB从C#调用存储过程的问题

我不是第一个遇到这些问题的人,并会在下面列出一些参考文章,但我仍在寻找合适的解决方案。 我需要从C#Web服务调用存储过程(Oracle 10g数据库)。 Web服务器安装了Oracle 9i客户端,我使用的是Microsofts System.Data.OracleClient 。 该过程将XML作为CLOB。 当XML超过4000字节 (这可能是正常的用例)时,我偶然发现了以下错误: ORA-01460 – 要求执行未实现或不合理的转换 我发现了这个 , 这个和这个post。 此外,我发现了一个很有前途的解决方法,它不直接从C#调用存储过程,而是定义了一段匿名PL / SQL代码。 此代码作为OracleCommand运行。 XML嵌入为字符串文字,过程调用从该段代码中完成: private const string LoadXml = “DECLARE ” + ” MyXML CLOB; ” + ” iStatus INTEGER; ” + ” sErrMessage VARCHAR2(2000); ” + “BEGIN ” + ” MyXML := ‘{0}’; ” + ” iStatus […]

通过进度条显示执行进度

我有一个愚蠢的问题,但我被卡住了。 我正在执行一个存储过程表单,我的代码过程需要时间,所以为此我显示一个进度条,显示执行的进度,但存储过程执行,没有任何东西,我增加进度条的值。 这是我的代码 void btnYes_Click(object sender, EventArgs e) { if (DialogResult.Yes == MessageBox.Show(“Are you sure”, “”, MessageBoxButtons.YesNo)) { try { dbDataEntities db = new dbDataEntities(); string myquery = “DECLARE @return_value int EXEC @return_value = [dbo].[ssspUpdateMarksOfStudent] SELECT ‘Return Value’ = @return_value”; //progressbar1.Maximum = 5000; //progressbar1.value = ?; // how could i increment it // db.Database.ExecuteSqlCommand(“myquery”); } […]

通过entity framework将int数组传递给T-SQL存储过程

我阅读了很多post并认为我理解了这些概念,但是我的一小部分内容未能从C#/ EF模块传递到SQL Server存储过程。 希望其他人可以发现问题所在。 我正在使用EF6,4.5 .Net Framework,SQL Server 2014 在数据库中我创建了这些类型/过程: CREATE TYPE [dbo].[IntsTTV] AS TABLE( [Id] [int] NOT NULL ) 请注意,名为“Person”的表存在列’Id’(int)和’LastName’(nvarchar),并且具有数据。 CREATE PROCEDURE [dbo].[GetUsers] @UserIds dbo.IntsTTV READONLY AS BEGIN SELECT p.LastName FROM [dbo].[Person] p INNER JOIN @UserIds ids On p.Id = ids.Id; END // C#代码 SqlMetaData[] columns = new SqlMetaData[1]; columns[0] = new SqlMetaData(“Id”, SqlDbType.Int); […]

存储过程的架构

我有一个程序,我想阅读程序的架构。 要检索视图模式,我使用此处显示的查询。 同样的方式我想获得存储过程的模式。 怎么弄呢? Plz显示了一些语法。 public static DataTable SchemaReader(string tableName) { string sql = string.Format(“Select * from {0}”, tableName); conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); cmd.CommandType = CommandType.Text; SqlDataReader reader = cmd.ExecuteReader(); DataTable schema = reader.GetSchemaTable(); reader.Close(); conn.Close(); return schema; } 如果有任何查询请问。请提前谢谢。

存储过程中EXISTS子句的参数

我有一个表DEPT ,它包含2列 – ID, NAME 。 将使用DEPT表中的ID显示搜索表单,用户可以选择任意数量的ID并提交表单,以获取相关的NAMEs 。 澄清/输入: 我不想构建动态查询 – 它不可管理。 我更喜欢使用表值参数的存储过程 还有其他解决办法吗? 注意: 这个例子很简单,只有1个表 – 在现实生活中,我必须处理超过6个表! 谢谢你的任何建议

如何将存储过程的多个结果存储到数据集中?

如何将StoredProcedure中的结果集合并到ASP.NET中的一个数据集中? 下面是我在asp.net中的代码 SqlDataAdapter adap = new System.Data.SqlClient.SqlDataAdapter(“sp_Home_MainBanner_TopStory”,con); adap.SelectCommand.CommandType = CommandType.StoredProcedure; adap.SelectCommand.Parameters.AddWithValue(“@rows”, 9); DataSet DS = new DataSet(); adap.Fill(DS, “Table1”); adap.Fill(DS, “Table2”); GridView1.DataSource = DS.Tables[“Table2”]; GridView1.DataBind(); 即使有两个适配器,我怎样才能将结果合并到一个数据集中?

在C#中访问SQL Server存储过程输出参数

我有一个简单的SQL Server存储过程: ALTER PROCEDURE GetRowCount ( @count int=0 OUTPUT ) AS Select * from Emp where age>30; SET @count=@@ROWCOUNT; RETURN 我试图访问以下C#代码中的输出参数: SqlConnection con = new SqlConnection(); con.ConnectionString = “Data Source=localhost\\SQLEXPRESS;Initial Catalog=answers;Integrated Security=True”; SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = “GetRowCount”; cmd.CommandType=CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter(“@count”, SqlDbType.Int)); cmd.Parameters[“@count”].Direction = ParameterDirection.Output; con.Open(); SqlDataReader reader=cmd.ExecuteReader(); int ans […]

使用LIST INSERT到存储过程

我有这个存储过程: CREATE PROCEDURE [RSLinxMonitoring].[InsertFeatures] @Features nvarchar(50), @TotalLicenses int, @LicensesUsed int, @ServerName nvarchar(50) AS SET NOCOUNT ON INSERT INTO [RSLinxMonitoring].[FeatureServer] ([Features] ,[TotalLicenses] ,[LicensesUsed] ,[Server]) VALUES(@Features ,@TotalLicenses ,@LicensesUsed ,@ServerName) 它按预期工作,但由于我需要从我的C#Linq-to-SQL类中插入一点退出,我想从我的应用程序中插入一个列表,这可能吗? 我已经看到它已经使用SELECT语句完成,但在使用INSERT时则没有。 更新:由于LINQ to SQL不支持用户定义的表类型,我不能使用表。 🙁

如何在存储过程中使用OUTPUT参数

我是编写存储过程的新手。 所以我用输出参数写了一个并且想要访问输出值,hot来做它。 我的存储过程: ALTER PROCEDURE selQuery ( @id int, @code varchar(50) OUTPUT ) AS SELECT RecItemCode = @code, RecUsername from Receipt where RecTransaction = @id RETURN @code 如果尝试将“@ code = RecItemCode”设置为获取错误:“为变量赋值的SELECT语句不得与Data Retrieval操作结合使用。” 我使用存储过程: con.Open(); cmd.Parameters.AddWithValue(“@id”, textBox1.Text); SqlParameter code = new SqlParameter(“@code”, SqlDbType.Int); code.Direction = ParameterDirection.Output; cmd.Parameters.Add(code); SqlDataReader sdr = cmd.ExecuteReader(); MessageBox.Show(cmd.Parameters[“@code”].Value.ToString()); // getting error con.Close(); […]