【发布时间】:2021-07-01 09:54:23
【问题描述】:
我正在尝试从 IF 语句中可变的表中进行选择。这是我的问题。
--ItemProcedure (stored procedure name)
--Item (table name)
Itemcode ItemName qty
--------------------------
item123 Monitor 100
item456 Laptop 50
item789 Keyboard 10
Exec ItemProcedure 'Item'
Declare @Msg as varchar(50)
IF Exists (Select * from @TableName where Itemcode = 'item123')
BEGIN
SET @Msg = 'Item exists'
END
ELSE
BEGIN
SET @Msg = 'Item not exists'
END
Select @Msg
有什么方法可以做到这一点吗?请指教。
【问题讨论】:
-
SELECT * FROM [table]只是一个例子吗?因为将其作为存储过程在表现力或安全性方面没有任何增加;客户也可以自己提交该声明。这类事情需要动态 SQL,这在数据库端使用起来很不方便。 -
@jarlh 我正在使用 SQL Server。
-
对不起,你的问题没有意义。您正在运行的实际代码是什么,您遇到的错误/问题是什么?要“从存储过程中的变量表中选择 *”,您完全按照您所写的:
Select * from @TableName您是否试图将存储过程输出捕获到表变量中?这是一个常见的问题。 -
哦。你不能那样做。您需要使用动态 SQL stackoverflow.com/questions/2838490/a-table-name-as-a-variable
-
这能回答你的问题吗? A table name as a variable
标签: sql sql-server stored-procedures