我正在尝试从铁蟒运行存储的过程,但在设置命令类型时遇到问题:
import clr
clr.AddReference('System')
clr.AddReference('System.IO')
clr.AddReference('System.Data')
from System import Console as cns
from System.Data import SqlClient as sql
我已经测试了 Sql 连接的代码并运行了一个简单的选择查询来验证我是否可以获得有效的连接,因此它作为"con"传递到此函数中
def get_cols_for(con, table):
cols = {}
cmd = sql.SqlCommand("sp_columns", con)
cmd.Parameters.Add(sql.SqlParameter("@table_name", "EQUIPMENT"))
sp = sql.SqlCommand.CommandType.StoredProcedure
rdr = cmd.ExecuteReader()
while rdr.Read():
cols[str(rdr[3])]=(str(rdr[5]),int(rdr[7])) # ColumnName @ 3, TypeName @ 5
rdr.Close()
return cols
智能感知建议自动将StoredProcedure作为CommandType成员,所以我很确定它确实存在,但是当我运行此代码时,我收到以下抱怨:
{"'getset_descriptor' 对象没有属性 'StoredProcedure'"}
当我执行行 sp = sql 时。SqlCommand.CommandType.StoredProcedure
如何设置命令类型?
顺便说一句,如果我只使用这种形式,它可以正常工作:
cmd = sql.SqlCommand("exec sp_columns @table_name='%s'" % table, con)
似乎没有导入。如果您通过以下方式导入它
from System.Data import CommandType as cmdType
它的工作原理是:
>>>cmdType.__doc__
返回:
指定如何解释命令字符串。 枚举 命令类型,值: 存储过程 (4), 表直 (512), 文本 (1)
另请注意,根据 msdn,您还应该将 CommandText
属性设置为存储过程的名称。