【发布时间】:2019-03-18 11:34:15
【问题描述】:
希望你们一切都好。
我一直在做一个项目,我需要存储关于我的大学的数据,包括身份证号码、姓名、联系方式等。
我在创建能够将数据插入指定 schema.table_name 的存储过程时遇到了一些困难。该过程必须能够允许 EXEC 命令指定您希望将数据插入到哪个模式。对于所有 14 个模式,table_name 将保持不变。以下代码示例是我想出的,但它似乎不起作用:
CREATE PROCEDURE AddStudent_proc(@campus varchar(50), @StudentID numeric(4,0), @Name varchar(50), @Surname varchar(50), @ID_numeric numeric(13,0), @Address varchar(100))
AS
BEGIN
DECLARE @dynamic varchar(MAX)
SET @dynamic = 'INSERT INTO ['+quotename(@campus)+'].Student_tbl(
StudentID,
Name,
Surname,
ID_numeric,
Address
)
VALUES('+quotename(@StudentID)+','+quotename(@Name)+','+quotename(@Surname)+','+quotename(@ID_numeric)+','+quotename(@Address)+');'
EXEC (@dynamic);
END
GO
可以找到我的整个结构 here
如果我对这个主题有任何帮助,我将不胜感激,因为我对整个 SQL 还是很陌生。
提前致谢。
【问题讨论】:
-
您需要在动态查询中进行适当的引用。我总是在执行之前选择语句。选择@dynamic --> EXEC (@dynamic) 找出问题所在。每个级别都需要双引号。
标签: sql-server tsql stored-procedures dynamic-sql