繁体   English   中英

将 3 个输入放入 SQL 服务器中的存储过程

[英]Putting 3 inputs to the Stored Procedure in SQL Server

有一个学生表,其中包含 ID 和名称列。 但是,想使用存储过程中的参数来获取:

select * from Student where ID = value; 

同时,我使用了这段代码。 无法获得爆发力。 此外,我收到此错误消息:

select * from [Student] where ID = 2 Msg 203, Level 16, State 2, Procedure FindTblName, Line 11 [Batch Start Line 28] The name 'select * from [Student] is not a [Student]。其中 ID =

create procedure FindTblName 
@tblName varchar(100),
@IDName varchar(10),
@IDValue int 
as
begin 

declare @sql varchar(max)
set @sql = 'select * from '+ QUOTENAME(@tblName) + ' where ' + @IDName + ' = ' + convert(nvarchar(2),@IDValue)
print @sql 
exec @sql 
end

exec FindTblName @tblName = Student, @IDName = ID, @IDValue = 2; 

如果您必须这样做,请正确引用您的 object 名称,并参数化您的参数。 然后将您的 object 名称作为nvarchar传递,而不是未知的“对象”类型:

CREATE PROC dbo.FindTblName @TblName sysname , @IDName sysname, @IDValue int AS
BEGIN

    DECLARE @SQL nvarchar(MAX);

    SET @SQL = N'SELECT * FROM dbo.' + QUOTENAME(@TblName) + N' WHERE ' + QUOTENAME(@IDName) + N' = @IDValue;';
    EXEC sp_executesql @SQL, N'@IDValue int', @IDValue;

END;
GO

EXEC dbo.FindTblName @TblName = N'Student', @IDName = N'ID', @IDValue = 2; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM