sql - SQL Server 过程或函数 CreateTable 指定的参数过多
问题描述
我想创建一个包含 2 列的表:varchar 类型的客户名称和 int 类型的年龄。
我的代码:
CREATE PROCEDURE CreateTable
(@tablename varchar(50),
@column varchar(50),
@type varchar(50),
@column2 varchar(20),
@type2 int,
@extra varchar(20) = NULL)
AS
BEGIN
DECLARE @sqlQuery AS varchar(MAX)
SET @sqlQuery = 'CREATE TABLE ' + @tablename + '( id int '+ @column +' ' + @type + @column2 +' ' + @type2+' PRIMARY KEY(id))'
PRINT (@sqlQuery)
EXEC (@sqlQuery)
END
GO
EXEC CreateTable 'Customers', 'Name', 'varchar(50)', 'Age', 'int'
错误是:
过程或函数 CreateTable 指定的参数过多
我不知道我的错误在哪里。请帮我。
解决方案
现在应该可以了:
CREATE PROCEDURE CreateTable (
@tablename VARCHAR(50)
,@column VARCHAR(50)
,@type VARCHAR(50)
,@column2 VARCHAR(20)
,@type2 VARCHAR(50)
,@extra VARCHAR(20) = NULL
)
AS
BEGIN
DECLARE @sqlQuery AS VARCHAR(MAX)
SET @sqlQuery = 'create table ' + @tablename + '( id int ,' + @column + ' ' + @type + ' , ' + @column2 + ' ' + @type2 + ' PRIMARY KEY(id))'
PRINT (@sqlQuery)
EXEC (@sqlQuery)
END
GO
EXEC CreateTable 'Customers'
,'Name'
,'varchar(50)'
,'Age'
,'int'
如果您比较参数,您会发现类型@type2
被指定为int
它应该是varchar
执行语句的一部分。
(,)
您在存储过程中的可执行字符串中也缺少逗号。
推荐阅读
- google-chrome-app - 我的 javascript 无法在我的 chrome 应用程序上运行
- c++ - 朋友、模板、命名空间
- ibm-cloud - Watson Assistant:将 double 值舍入到小数点后 2 位
- asp.net-mvc - 根据选择的搜索条件搜索数据库
- javascript - 更改按钮的值直到延迟后才会在视觉上显示
- unix - 从 json 响应 unix 中提取值
- python - Python 3 中的卷曲命令
- database - MongoDB - WiredTiger 快照与锁定
- python-3.x - OOP:尝试创建对象实例时出现名称错误
- amazon-web-services - Amazon SES 什么都不做