Asp.net Oracle SQL更新作为参数(进入存储过程)字符串从.NET传递

Asp.net Oracle SQL更新作为参数(进入存储过程)字符串从.NET传递,asp.net,sql,oracle,sql-update,Asp.net,Sql,Oracle,Sql Update,我想知道如何完成这项任务。我已经看过了案例、解码或IF条件,但我无法让它工作。我的目标是将由ASP.NET数据构造的预定义列/值对块传递到Oracle存储过程。我试图只更新许多列中的某些列,以保留其他不需要更新的列。下面是我的设置: 存储过程: UpdateSelectedColumns(myValuePairString, updatedBy) -- Passed variable from ASP.NET, myValuePairString = 'col1 = 10,col2 = 'Do

我想知道如何完成这项任务。我已经看过了案例、解码或IF条件,但我无法让它工作。我的目标是将由ASP.NET数据构造的预定义列/值对块传递到Oracle存储过程。我试图只更新许多列中的某些列,以保留其他不需要更新的列。下面是我的设置:

存储过程:

UpdateSelectedColumns(myValuePairString, updatedBy)

-- Passed variable from ASP.NET, myValuePairString = 'col1 = 10,col2 = 'Dog''

-- update statement final
UPDATE MyTable   
       SET
       col1 = 10,
       col2 = 'Dog'
       col3 = 'john';
COMMIT;
提前谢谢你


Ricky这一次,我建议不要使用存储过程。这里没有必要使用存储过程

实际上,您的存储过程会盲目地接受其参数,并在不添加任何值的情况下执行更新。此外,通过使用此过程,您可以避免使用绑定,并使自己暴露于bug(每当您使用引号
输入值时)、性能命中和SQL注入漏洞中

如果将aribtrary字符串作为参数并放在动态游标中,PL/SQL的优势(简单透明绑定、游标的透明使用和重用、严格的静态SQL解析和元数据依赖性)都是毫无意义的

您最好使用您的语言本机游标和绑定变量


如果您真的想使用PL/SQL,请用两个表替换单个参数。一个用于列名,一个用于变量值。然后可以使用解析语句并使用适当的绑定变量。您需要一些约定才能解析日期、数字和字符值。您需要从数据库中读取元数据以检查数据类型。这将是一大堆代码,没有一点价值。

这一次,我建议不要使用存储过程。这里没有必要使用存储过程

实际上,您的存储过程会盲目地接受其参数,并在不添加任何值的情况下执行更新。此外,通过使用此过程,您可以避免使用绑定,并使自己暴露于bug(每当您使用引号
输入值时)、性能命中和SQL注入漏洞中

如果将aribtrary字符串作为参数并放在动态游标中,PL/SQL的优势(简单透明绑定、游标的透明使用和重用、严格的静态SQL解析和元数据依赖性)都是毫无意义的

您最好使用您的语言本机游标和绑定变量

如果您真的想使用PL/SQL,请用两个表替换单个参数。一个用于列名,一个用于变量值。然后可以使用解析语句并使用适当的绑定变量。您需要一些约定才能解析日期、数字和字符值。您需要从数据库中读取元数据以检查数据类型。这将是一个没有一点价值的代码很多