这是我在SQL Server 2014中的存储过程:
CREATE PROCEDURE [dbo].[spSelectUserFromProfileUsers]
@TableName NVARCHAR(20),
@User NVARCHAR(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @query NVARCHAR(MAX);
SET @query = 'SELECT * FROM ' + QUOTENAME(@TableName) + ' WHERE Users =' + @User
EXECUTE sp_executesql @query
END
这是我在Visual Studio中的代码:
if (TableFunctions.doesTableExist(ComboBoxSelectedProfile.SelectedItem + "Users", dbConnectionString))
{
// DynamicSQL
using (SqlCommand command = new SqlCommand("spSelectUserFromProfileUsers", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@TableName", ComboBoxSelectedProfile.SelectedItem + "Users");
command.Parameters.AddWithValue("@User", TextBoxUserName.Text);
command.ExecuteNonQuery();
}
}
我收到了错误:
我输入文本框/
的列名称/文本无效
我一直在寻找解决方案,我找不到任何东西,非常感谢你的帮助!
答案 0 :(得分:0)
您需要确保Users
值在引号内。因为它是sql
并且只有单引号可用,所以你必须以那种奇怪的方式进行。
SET @query='SELECT * from '+QUOTENAME(@TableName)+' where Users='''+@User+''''
答案 1 :(得分:0)
尝试执行动态sql的存储过程语法错误。
@ParmDefinition
从documentation about sp_executesql你可以看到一个参数应该在动态sql文本中使用,而不是试图提取值并附加值。之后,您应该为sp_executesql(@User = @User
)定义参数,并将其值(if (( object instanceof THREE.Mesh ) {
)设置为sp_executesql的第二个和第三个参数
答案 2 :(得分:-1)
查询未正确附上。
SET @query="SELECT * from '+QUOTENAME(@TableName)+' where Users='+@User+'"