我才学用存储过程,还不太懂这个怎么用。大家给我看看有什么毛病。
我的存储过程如下:
CREATE PROCEDURE dbo.car_Table@TableName AS VARCHAR(50)
AS

 BEGIN
CREATE TABLE [dbo].[@TableName] (
[stu_id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[stu_name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[stu_ping] [decimal](18, 0) NULL ,
[stu_qi] [decimal](18, 0) NULL ,
[stu_exp] [decimal](18, 0) NULL ,
[stu_last] [decimal](18, 0) NULL ,
[stu_total] [decimal](18, 0) NULL 
) ON [PRIMARY]
END
GO我的程序代码为:
private void button2_Click(object sender, System.EventArgs e)
{
SqlConnection con=DBcon.CreateCon();
con.Open();
SqlCommand cmd=new SqlCommand("cre_Table",con);
cmd.CommandType=CommandType.StoredProcedure;
            //  SqlParameter param;
            //cmd.Parameters.Add("@TableName",System.Data.SqlDbType.VarChar);
cmd.Parameters.Add("@TableName",SqlDbType.VarChar);
cmd.Parameters["@TableName"].Value=textBox1.Text;
cmd.ExecuteNonQuery();
MessageBox.Show("ok");
}
不过这里每次通过textbox1传入的表名都没有传到存储过程中,每次都建立的是@TableName这个表但我想建立的是以textbox1的内容为表名的表。是不是我传的方法不对???

解决方案 »

  1.   

    CREATE PROCEDURE dbo.car_Table
    --存储过程如下-------------开始
    @TableName AS VARCHAR(50)
    AS

    BEGIN
    DECLARE   
    @sql                  NVARCHAR(4000)
    SET @sql='CREATE TABLE [dbo].['+@TableName+'] (
    [stu_id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [stu_name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [stu_ping] [decimal](18, 0) NULL ,
    [stu_qi] [decimal](18, 0) NULL ,
    [stu_exp] [decimal](18, 0) NULL ,
    [stu_last] [decimal](18, 0) NULL ,
    [stu_total] [decimal](18, 0) NULL 
    ) ON [PRIMARY]'EXEC (@sql)END
    GO
    -----------------结束
    --可以在查询分析器中用如下语句测试
    exec dbo.car_Table 'cre_Table'
      

  2.   

    CREATE PROCEDURE dbo.car_Table
    --存储过程如下-------------开始
    @TableName AS VARCHAR(50)
    AS

    BEGIN
    DECLARE   
    @sql                  NVARCHAR(4000)
    SET @sql='CREATE TABLE [dbo].['+@TableName+'] (
    [stu_id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [stu_name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [stu_ping] [decimal](18, 0) NULL ,
    [stu_qi] [decimal](18, 0) NULL ,
    [stu_exp] [decimal](18, 0) NULL ,
    [stu_last] [decimal](18, 0) NULL ,
    [stu_total] [decimal](18, 0) NULL 
    ) ON [PRIMARY]'EXEC (@sql)END
    GO
    -----------------结束
    --可以在查询分析器中用如下语句测试
    exec dbo.car_Table 'cre_Table'
      

  3.   

    --存储过程如下-------------开始CREATE PROCEDURE dbo.car_Table
    @TableName AS VARCHAR(50)
    AS

    BEGIN
    DECLARE   
    @sql                  NVARCHAR(4000)
    SET @sql='CREATE TABLE [dbo].['+@TableName+'] (
    [stu_id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [stu_name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [stu_ping] [decimal](18, 0) NULL ,
    [stu_qi] [decimal](18, 0) NULL ,
    [stu_exp] [decimal](18, 0) NULL ,
    [stu_last] [decimal](18, 0) NULL ,
    [stu_total] [decimal](18, 0) NULL 
    ) ON [PRIMARY]'EXEC (@sql)END
    GO
    -----------------结束
    --可以在查询分析器中用如下语句测试
    --exec dbo.car_Table 'cre_Table'
      

  4.   

    --存储过程如下-------------开始CREATE PROCEDURE dbo.car_Table
    @TableName AS VARCHAR(50)
    AS

    BEGIN
    DECLARE   
    @sql                  NVARCHAR(4000)
    SET @sql='CREATE TABLE [dbo].['+@TableName+'] (
    [stu_id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [stu_name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [stu_ping] [decimal](18, 0) NULL ,
    [stu_qi] [decimal](18, 0) NULL ,
    [stu_exp] [decimal](18, 0) NULL ,
    [stu_last] [decimal](18, 0) NULL ,
    [stu_total] [decimal](18, 0) NULL 
    ) ON [PRIMARY]'EXEC (@sql)END
    GO
    -----------------结束
    --可以在查询分析器中用如下语句测试
    --exec dbo.car_Table 'cre_Table'