Tag: 存储过程

C#DataTable到Oracle存储过程

我需要做的是将C#DataTable传递给Oracle存储过程。 这是我做的: 甲骨文方面: 创建了一个类型: create or replace TYPE CUSTOM_TYPE AS OBJECT ( attribute1 VARCHAR(10), attribute2 VARCHAR(10) ); 创建了一个表 create or replace TYPE CUSTOM_TYPE_ARRAY AS TABLE OF CUSTOM_TYPE; 创建了一个存储过程 create or replace PROCEDURE SP_TEST ( P_TABLE_IN IN CUSTOM_TYPE_ARRAY, P_RESULT_OUT OUT SYS_REFCURSOR ) AS –P_TABLE_IN CUSTOM_TYPE_ARRAY; BEGIN OPEN P_RESULT_OUT FOR SELECT attribute1, attribute2 FROM TABLE(P_TABLE_IN); END SP_TEST; […]

调用存储过程时处理SQL注入的最佳实践

我inheritance了我正在修复安全漏洞的代码。 调用存储过程时,处理SQL注入的最佳实践是什么? 代码类似于: StringBuilder sql = new StringBuilder(“”); sql.Append(string.Format(“Sp_MyStoredProc ‘{0}’, {1}, {2}”, sessionid, myVar, “0”)); using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings[“Main”].ToString())) { cn.Open(); using (SqlCommand command = new SqlCommand(sql.ToString(), cn)) { command.CommandType = CommandType.Text; command.CommandTimeout = 10000; returnCode = (string)command.ExecuteScalar(); } } 我只是用常规SQL查询做同样的事情并使用AddParameter正确添加参数?

如何为SQL CLR存储过程提供sql_variant参数?

如何将sql_variant参数添加到SQL CLR存储过程? 使用System.Object不起作用,我没有看到任何可以使用的属性。 [Microsoft.SqlServer.Server.SqlProcedure] public static void ClearOnePartition( SqlString aString , /* I want this to be a sql_variant */ object aVariant ) { //do stuff here }

如何通过c#mvc函数传递两个参数来调用存储过程

当我需要传递单个参数时,我可以轻松完成,如下所示: public ProjectsModel GetProjectListBySearch(int projectId) { try { using (_context = new Exo_ADBEntities()) { var getdetailprojectlist = _context.Database.SqlQuery(“exec dbo.[GetProjectListByID] @ProjectID”, new SqlParameter(“@ProjectID”, projectId)).FirstOrDefault(); return getdetailprojectlist; } } catch (Exception) { throw; } } 这很好用但是当我尝试做同样的事情但传递两个参数时我发现语法错误称为无效参数请帮我做这个。使用两个参数时的代码如下 public List GetProjectDetailsBySectorAndSubSector(int sectorid,int subsectorid) { try { using (_context = new Exo_ADBEntities()) { var projectbysectorandsubsector = _context.Database.SqlQuery(“exec dbo.[GetProjectDetailsBySectorAndSubSector] @sectorId,@subSectorId”, new […]

无法访问存储过程中的表变量

我以这种方式将数据表从Code传递给存储过程。 DataTable table = CommonFunctions.ToDataTable(request); object[] spParams = new object[1]; spParams[0] = table; DbCommand dbCommand = db.GetStoredProcCommand(“OS_UpdateOrgStructureDetails”, spParams); 我试图在存储过程中访问此参数。 CratePROCEDURE OS_UpdateOrgUnits @table OS_RenameNodeTable READONLY AS BEGIN UPDATE OrgUnit SET DetailName = ut.NewValue FROM @table ut INNER JOIN OrgUnit ou ON ou.OrgUnitID = ut.OrgUnitID END 但是当调用存储过程时,它会抛出错误。 The incoming tabular data stream (TDS) remote procedure call (RPC) […]

SQL Server将SP_EXECUTESQL识别为对象而不是过程名称

我正在使用DBContext.Database.SqlQuery从我的C#代码存储库执行存储过程。 它工作正常,但我想知道它为什么执行如下所示的过程: exec sp_executesql N’EXEC GetCaseList @CaseStage’,N’@CaseStage int’,@CaseStage=9 而不是 EXEC GetCaseList @CaseStage = 9 有没有办法让我的所有程序都像这样从c#执行 EXEC GetCaseList @CaseStage = 9而不是exec sp_executesql N’EXEC GetCaseList @CaseStage’,N’@CaseStage int’,@CaseStage=9 ? 如何使SQL Server Profiler将过程名称视为对象而不是SP_EXECUTESQL? 注意:我想从c#执行过程作为EXEC GetCaseList @CaseStage = 9因为我通过SQL Server Profiler以表格格式保存跟踪数据。 在ObjectName列中,它将sp_executesql显示为对象而不是过程名称(GetCaseList)作为对象。 我只能从c#代码进行更改。

EF 6 Code First存储过程 – 只读

我搜索了一些post,但是很短。 我首先使用EF6代码尝试从已在数据库中设置的存储过程中获取结果。 我的应用程序很简单,它从两个不同的服务器获取数据,执行一些业务逻辑,然后向用户显示。 我可以使用.edmx文件,它将函数映射到xml文件中。 当我使用Power Tools向我自己展示XML文件时,我没有看到我的代码中的函数导入,所以我要么缺少设置,要么我不能使用ExecuteFunction() 。 我可以先使用ExecuteFunction()代码吗? 我的存储过程只返回记录。 我有这个设置的原因是因为存储过程提供另一个应用程序,我们希望在一个地方(SSMS)保留对查询的所有更改。 我意识到我可以使用ExecuteStoredQuery / ExecureStoredCommand ,但是如果我使用.edmx模型,我想坚持惯例。 如果我可以使用ExecuteFunction ,我在哪里以及如何配置我的DbContext来识别存储过程? 在我的设置下面,我收到错误 在容器{1}中找不到FunctionImport {0} 我可以使用Fluent API吗? 谢谢。 public class JobContext : DbContext { public JobContext() : base(“name=JobContext”) { // My context will only define a slice of the database Database.SetInitializer(null); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.ComplexType(); } public […]

使用Entity Framework在事务内部调用存储过程

我正在尝试使用Entity Framework运行以下事务。 在事务范围内,我从DB调用存储过程。 using (mother_Entities entitiesContext = context.Value) { using (var transactionScope = new TransactionScope()) { // a lot of create, insert, update operations goes here … entitiesContext.SaveChanges(); //Execute stored procedure: var paramMessage = new ObjectParameter(“MESSAGE”, “”); var paramMotherid = new ObjectParameter(“MOTHERID”, motherProductId); var paramTochteridlist = new ObjectParameter(“TOCHTER_ID_LIST”, string.Join(“;”, motherIds)); var paramError = new ObjectParameter(“ERROR”, […]

使用ODP.Net托管客户端将对象数组传递给oracle存储过程

我在我的Web API中有以下Employee类。 public class Employee { public string Name { get; set; } public string City { get; set; } } 我的Web API会在每个请求中收到50个员工记录的列表,并且需要在Oracle数据库中更新这些详细信息。 我遵循将整数数组传递给Oracle存储过程的相同方法,并尝试了以下方法。 在Oracle中创建了以下类型和存储过程。 – 基础类型 create or replace type EMPTEST AS OBJECT ( Name varchar2(50), City varchar2(50) ); – 包 create or replace PACKAGE pkgUDFArray_Test AS type “T_EMPUDF_ARRAY” is table of EMPTEST; PROCEDURE […]

存储过程的进度条

我正在从asp.net前端调用存储过程。 它通常在许多表上插入。 在前端我想展示两件事:进度条就像完成了多少。 要显示的第二件事是当前数据库插入。 喜欢:CURRENTLY INSERTING:tblCustomers 不胜感激!