2011-06-08 43 views
0

目前使用MS SQL2000如果这有什么区别。是否有更好的方式使用SQL以编程方式访问表格

是否有更好的方法比下面的方法能够以编程方式访问表?

declare @tableName as varchar(50) 
declare @sql varchar(4000) 

set @tableName = 'User' 

print @tableName 

If EXISTS(
select TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_name = ''[email protected]+'' 
) 
BEGIN 
    set @sql = 'select * from [' + @tableName + ']' 
    exec(@sql) 

end 

基本上我试着让我只需要一个存储过程的每个操作创建CRUD操作的简单的映射工具,我可以在我的参数化的对象,一个表名通过,并让数据库做休息。这纯粹是为了我自己的个人教育,所以为什么我不使用一个既定的框架,所以如果我的想法或上面的代码有任何重大问题,我会很感激。

感谢

回答

0

这是完整的例子创建一个SP将按照你的初始代码:

CREATE PROCEDURE dbo.CustomSelect (@tableName as varchar(50)) 
AS 
SET NOCOUNT ON 
DECLARE @sql varchar(4000) 

If EXISTS(
select TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_name = @tableName 
) 
BEGIN 
    set @sql = 'select 1 as Found, * from [' + @tableName + ']' 
    exec(@sql) 
END 
ELSE 
BEGIN 
    select 0 as Found 
END 

该SP 总是返回记录集,所以你可以检查the value of the field FOUND知道,如果表中存在或不

用法:

EXEC CustomSelect 'User' 

希望它有帮助

+0

谢谢,我会给它一个去! – Matt 2011-06-08 13:57:19

+0

尽管在我需要插入记录的情况下它并没有帮助我。我想我不能有一个通用的尺寸适合所有的sproc那里,因为不同的对象会有不同数量的参数。回到绘图板,我猜! – Matt 2011-06-08 14:56:52

+0

该SP仅适用于您可以作为参数传递的表中的选定记录。要确保插入记录,您需要为每种情况创建一个特定的SP,这是一种正常的做法。 – 2011-06-08 16:34:38