相关疑难解决方法(0)

不同的数据库使用不同的名称引用?

例如,mysql引用表名使用

SELECT * FROM `table_name`;
Run Code Online (Sandbox Code Playgroud)

注意`

其他数据库是否使用不同的char来引用其表名

mysql database

23
推荐指数
1
解决办法
6795
查看次数

是否可以使用带参数的sp_executesql发出CREATE语句?

我正在尝试动态创建触发器,但在使用sp_executesql参数并将参数传递到动态SQL时遇到了一个令人困惑的问题.以下简单测试用例有效:

DECLARE @tableName sysname = 'MyTable';
DECLARE @sql nvarchar(max) = N'
    CREATE TRIGGER TR_' + @tableName + N' ON ' + @tableName + N' FOR INSERT
        AS
        BEGIN
            PRINT 1
        END';
EXEC sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够@tableName在脚本中使用(和其他值)作为变量,因此我将其传递给sp_executesql调用:

DECLARE @tableName sysname = 'ContentItems';
DECLARE @sql nvarchar(max) = N'
    CREATE TRIGGER TR_' + @tableName + N' ON ' + @tableName + N' FOR INSERT
        AS
        BEGIN
            PRINT @tableName
        END';
EXEC sp_executesql @sql, N'@tableName sysname', @tableName=@tableName
Run Code Online (Sandbox Code Playgroud)

运行上面的代码时,我收到一个错误:

Msg 156,Level …

sql-server dynamic-sql sp-executesql

13
推荐指数
1
解决办法
428
查看次数

更改表SqlCommand

我试图使用带参数的SqlCommand更改表中其中一列的数据类型,但它不起作用.这是我的代码:

    Dictionary<string,string> dict = new Dictionary<string,string>();
    dict.Add("@TableName",TableColumnArray[0].ToString( ));
    dict.Add("@ColumnName",TableColumnArray[1].ToString( ));
    DBSql.ExecSQLStatement( "ALTER TABLE @TableName ALTER COLUMN @ColumnName varchar(MAX)",dict,connectionStringName);

    public static void ExecSQLStatement (string strsql,Dictionary<string,string> dict,string  connectionStringName)
    {
        SqlConnection con = CreateSqlConnectionStr(connectionStringName);
        SqlCommand cmd = new SqlCommand(strsql,con);
        foreach(string dictKey in dict.Keys)
        {
            cmd.Parameters.Add(new SqlParameter(dictKey,dict[dictKey]));
        }
        con.Open( );
        cmd.ExecuteNonQuery( );
        con.Close( );
    }
Run Code Online (Sandbox Code Playgroud)

但代码不断抛出错误:"@TableName附近的语法不正确".我找不到解决这个问题的方法.我可以尝试使用存储过程,但我真的想知道为什么代码不起作用.我通常使用带有select,insert语句参数的SqlCommand,但它似乎不适用于alter语句?

c# sql

2
推荐指数
1
解决办法
2313
查看次数

标签 统计

c# ×1

database ×1

dynamic-sql ×1

mysql ×1

sp-executesql ×1

sql ×1

sql-server ×1