【问题标题】:Create table stored procedure in SQL Server在 SQL Server 中创建表存储过程
【发布时间】:2018-04-06 17:32:49
【问题描述】:

我有一个表Persons (Id, Name),我需要创建一个名称为Results_NameUser 的表(其中NameUser 是用户名)。此表是在我在表单上创建用户后自动生成的。我需要为此操作使用存储过程,但我不知道如何编写。

我有一个程序的初步代码(这个程序将在创建用户后在代码中调用)

CREATE PROCEDURE createResult
    @userName VARCHAR(50)
AS
BEGIN
    CREATE TABLE Result_@userName 
    (
        resultId UNIQUEIDENTIFIER NOT NULL,
        scores INT 
    );
END

但代码不正确。请告诉我,如何创建此程序

【问题讨论】:

标签: asp.net sql-server stored-procedures


【解决方案1】:

我会在尝试创建一个现有表之前添加一个检查,例如....

CREATE PROCEDURE createResult
    @userName NVARCHAR(120)
AS
BEGIN
  SET NOCOUNT ON;

  Declare  @Create_Sql  NVARCHAR(MAX)
         , @Drop_Sql    NVARCHAR(MAX)
         , @TableName   SYSNAME     = N'Result_' + @userName


 IF OBJECT_ID( @TableName , 'U') IS NOT NULL 
  BEGIN
      SET @Drop_Sql = N' DROP TABLE ' + QUOTENAME(@TableName) + N';' ;
      Exec sp_executesql @Drop_Sql
  END


 SET @Create_Sql = N' CREATE TABLE ' + QUOTENAME(@TableName)
                +  N' (resultId uniqueidentifier not null, '
                +  N' scores int); ';

 Exec sp_executesql @Create_Sql

END

还可以使用QUOTENAME() 来保护自己免受 SQL 注入攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2013-05-02
    • 2012-05-25
    相关资源
    最近更新 更多