【问题标题】:SQL - stored procedure, pass field and table name parameters on executeSQL - 存储过程,在执行时传递字段和表名参数
【发布时间】:2016-07-19 17:23:13
【问题描述】:

我创建了一个 SQL 过程,它用与原始值相同长度的 X 替换字段中的所有值。

Update  Table
Set     Name = Replicate('x', Len(Name))

我正在尝试更改此过程,以便在执行时只需将表和字段名称作为参数传递,而不是每次我想传递新字段时都编辑存储过程。有没有办法做到这一点?

当我想删除另一个字段中的值时,我认为执行语句应该是这样的:

Exec MyProcedure ‘Users’, ‘Email’

【问题讨论】:

  • 您可以在具有动态 SQL 的存储过程中执行此操作,但这很危险。您可能想在这里解释您真正想要做的事情,以便我们可以提出一些更安全、更可靠的选择。
  • 感谢您的回复。你是对的,这样的过程很危险,但它只会在测试数据库中执行,我有一个内置的检查来确保这一点。我怎么能用动态 SQL 做到这一点?

标签: sql stored-procedures execute replicate


【解决方案1】:

您可以使用 EXEC 执行这样的 sql 语句:EXEC (@sqlCommand)。 SqlCommand 将是您根据接收到的参数组成的字符串。

另外,另一种选择是使用 sp_executesql 运行语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多