在存储过程中使用参数值

用户名

我在存储过程中有以下SQL代码:

CREATE PROCEDURE sp_createAColDiffTable (@table_name nvarchar(128))
AS

CREATE TABLE @table_name ( 

[table_name]       VARCHAR (128) NOT NULL,
[column_name]      VARCHAR (128) NULL,
[what_changed]     VARCHAR (128) NULL,
[sr_data_type]     VARCHAR (128) NOT NULL,
[tr_data_type]     VARCHAR (128) NOT NULL,
[sr_max_length]    SMALLINT NOT NULL,
[tr_max_length]    SMALLINT NOT NULL,
[sr_is_nullable]   CHAR NULL,
[tr_is_nullable]   CHAR NULL,
[sr_precision]     SMALLINT NULL,
[tr_precision]     SMALLINT NULL,
[sr_scale]         SMALLINT NULL,
[tr_scale]         SMALLINT NULL )
ON [PRIMARY]
WITH (DATA_COMPRESSION = NONE)

我这样调用存储过程:

EXEC [sp_createAColDiffTable] 'hq193.dbo.arch_con_col_s193_s202'

当我运行代码时,出现错误:

“ @table_name”附近的语法不正确。

当我用实际的表名代替@table_name它工作正常。有人可以指出我的语法问题吗?

马特·惠特菲尔德

您将需要为此使用动态SQL,因为CREATE TABLE它不会使用变量名。

例如

CREATE PROCEDURE sp_createAColDiffTable (@table_name nvarchar(128))
AS

DECLARE @sql nvarchar(MAX)

SET @sql = 'CREATE TABLE ' + @table_name + ' (    
[table_name]       VARCHAR (128) NOT NULL,
[column_name]      VARCHAR (128) NULL,
[what_changed]     VARCHAR (128) NULL,
[sr_data_type]     VARCHAR (128) NOT NULL,
[tr_data_type]     VARCHAR (128) NOT NULL,
[sr_max_length]    SMALLINT NOT NULL,
[tr_max_length]    SMALLINT NOT NULL,
[sr_is_nullable]   CHAR NULL,
[tr_is_nullable]   CHAR NULL,
[sr_precision]     SMALLINT NULL,
[tr_precision]     SMALLINT NULL,
[sr_scale]         SMALLINT NULL,
[tr_scale]         SMALLINT NULL )
ON [PRIMARY] WITH (DATA_COMPRESSION = NONE)';
EXEC(@sql);

请注意,虽然使用动态SQL可能会导致SQL注入,所以请确保不要将任何用户输入传递给@table_name

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在存储过程中使用参数值

来自分类Dev

在存储过程中使用/受益于输出参数

来自分类Dev

在存储过程中使用DateTime作为参数,转换失败

来自分类Dev

如何在存储过程中使用数字参数?

来自分类Dev

在存储过程中使用参数获取动态表名

来自分类Dev

在基于参数的动态存储过程中使用通配符搜索

来自分类Dev

在存储过程中使用提取方法

来自分类Dev

在存储过程中使用会话变量

来自分类Dev

在存储过程中使用WITH,postgres

来自分类Dev

在存储过程中使用提取方法

来自分类Dev

如何在vb.net代码中使用SQL Server存储过程中的OUT参数

来自分类Dev

SQL Server:如何在存储过程中使用数据库名称作为参数?

来自分类Dev

存储过程中使用列名作为输入参数的动态SQL

来自分类Dev

如何在MySQL * Prepared *存储过程中使用多个参数

来自分类Dev

在Access中使用SQL Server存储过程中的输出参数

来自分类Dev

如何在C#的存储过程中使用输出参数

来自分类Dev

如何在vb.net代码中使用SQL Server存储过程中的OUT参数

来自分类Dev

如何在MySQL * Prepared *存储过程中使用多个参数

来自分类Dev

SQL Server:如何在存储过程中使用数据库名称作为参数?

来自分类Dev

传递XML多级数据作为参数并在存储过程中使用

来自分类Dev

在存储过程中使用多个可能为空的参数进行搜索

来自分类Dev

如何在ASP中使用可选参数将参数名称传递到存储过程中

来自分类Dev

CRLF序列作为存储过程中的默认参数值

来自分类Dev

SQL Server 2008在存储过程中选择计数和参数值

来自分类Dev

在存储过程中使用SAVE TRANSACTION SavePointName

来自分类Dev

如何在存储过程中使用插入/删除表?

来自分类Dev

授予适当的权限以在存储的过程中使用对称密钥

来自分类Dev

在存储过程中使用变量作为字符串

来自分类Dev

如何在SQL Server存储过程中使用if / else

Related 相关文章

  1. 1

    在存储过程中使用参数值

  2. 2

    在存储过程中使用/受益于输出参数

  3. 3

    在存储过程中使用DateTime作为参数,转换失败

  4. 4

    如何在存储过程中使用数字参数?

  5. 5

    在存储过程中使用参数获取动态表名

  6. 6

    在基于参数的动态存储过程中使用通配符搜索

  7. 7

    在存储过程中使用提取方法

  8. 8

    在存储过程中使用会话变量

  9. 9

    在存储过程中使用WITH,postgres

  10. 10

    在存储过程中使用提取方法

  11. 11

    如何在vb.net代码中使用SQL Server存储过程中的OUT参数

  12. 12

    SQL Server:如何在存储过程中使用数据库名称作为参数?

  13. 13

    存储过程中使用列名作为输入参数的动态SQL

  14. 14

    如何在MySQL * Prepared *存储过程中使用多个参数

  15. 15

    在Access中使用SQL Server存储过程中的输出参数

  16. 16

    如何在C#的存储过程中使用输出参数

  17. 17

    如何在vb.net代码中使用SQL Server存储过程中的OUT参数

  18. 18

    如何在MySQL * Prepared *存储过程中使用多个参数

  19. 19

    SQL Server:如何在存储过程中使用数据库名称作为参数?

  20. 20

    传递XML多级数据作为参数并在存储过程中使用

  21. 21

    在存储过程中使用多个可能为空的参数进行搜索

  22. 22

    如何在ASP中使用可选参数将参数名称传递到存储过程中

  23. 23

    CRLF序列作为存储过程中的默认参数值

  24. 24

    SQL Server 2008在存储过程中选择计数和参数值

  25. 25

    在存储过程中使用SAVE TRANSACTION SavePointName

  26. 26

    如何在存储过程中使用插入/删除表?

  27. 27

    授予适当的权限以在存储的过程中使用对称密钥

  28. 28

    在存储过程中使用变量作为字符串

  29. 29

    如何在SQL Server存储过程中使用if / else

热门标签

归档