[英]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.