将3个输入放入SQL Server中的存储过程-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

将3个输入放入SQL Server中的存储过程

2019-11-18 11:34:13 297 1

有一个学生表,带有ID和Name列。但是,想要使用存储过程中的参数来获得:

select * from Student where ID = value; 一会儿,我使用了这段代码。无法承受。此外,我收到此错误消息:

select * from [学生],其中ID = 2消息203,级别16,状态2,过程FindTblName,行11 [批处理开始第28行]名称'select * from [学生],其中ID = 2'是无效的标识符。

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;

问题来源于stack overflow

取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2019-11-18 11:34:22

    如果必须执行类似的操作,然后正确地引用对象名称并参数化参数。然后将您的对象名称作为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;

    0 0
相关问答

1

回答

【RDS】RDS SQL Server出现死锁现象,该如何处理?

2022-01-14 15:10:31 567浏览量 回答数 1

1

回答

在SQL Server中的常见事物是什么?

2021-12-08 23:02:07 311浏览量 回答数 1

1

回答

SQL Server Page由几部分组成?

2021-12-08 17:39:30 150浏览量 回答数 1

1

回答

SQL Server中SQLOS是什么?

2021-12-08 17:01:46 204浏览量 回答数 1

1

回答

SQL Server服务器是什么?

2021-12-08 17:38:03 186浏览量 回答数 1

1

回答

SQL Server 2008服务1433端口不监听

2019-07-16 10:11:15 416浏览量 回答数 1

0

回答

SQL Server实例管理页面简介

2017-10-17 17:13:45 1411浏览量 回答数 0

1

回答

SQLServer性能数据解析

2017-06-23 11:00:16 3833浏览量 回答数 1

2

回答

SQL SERVER 查询都有哪些权限

2016-06-08 15:37:06 2905浏览量 回答数 2

1

回答

SQL Server转 MySQL的方法或工具

2016-02-14 15:21:07 2084浏览量 回答数 1
文章
问答
问答排行榜
最热
最新
相关电子书
更多
SQL Server 2017
立即下载
SQL Sever迁移PG经验
立即下载
RDS SQL Server CPU高使用率性能优化
立即下载