在SQL Server中存储SQL代码

时间:2014-01-06 21:23:31

标签: sql sql-server

我正在考虑将非敏感SQL代码存储在表的列中。这被认为是可接受的做法吗?如果是,那么最好的数据类型是什么?此代码将由C#代码访问。

编辑 - 我正在使用SQL服务器。但是,这似乎是一个通用的RDBMS问题。

此外,相关问题 - What are the pros and cons to keeping SQL in Stored Procs versus Code

1 个答案:

答案 0 :(得分:4)

使用stored procedures。它们基本上就是您所描述的内容,但内置支持维护和安全性。

您可以创建一个程序:

CREATE PROCEDURE GetCustomerByID ( @CustomerID varchar(11) )
AS 
BEGIN
    SELECT CustomerName, CustomerAddress
    FROM Customers
    WHERE CustomerID = @CustomerID
END

然后call it from C#使用EXEC命令或指定CommandType.StoredProcedure

SqlCommand sqc = new SqlCommand("GetCustomerByID", con);
sqc.CommandType = CommandType.StoredProcedure;
sqc.Parameters.AddWithValue("@CustomerID", "FOOBAR");

var reader = sqc.ExecuteReader();

如果从SQL调用它,请使用EXEC

EXEC GetCustomerByID @CustomerID = 'FOOBAR';

要稍后更改,请使用ALTER PROCEDUREDROP PROCEDURE代替CREATE PROCEDURE