【发布时间】:2016-01-05 11:10:07
【问题描述】:
我正在尝试从 python 运行 MSSQL 过程。基本上我的python脚本只是使用这部分代码执行一个名为“my_proc”的存储过程
sql_query = """
use my_db
exec dbo.my_proc
"""
res = common.execute_sql(SERVER, USERNAME, PASSWORD, sql_query)
过程my_proc如下所示
USE [my_db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[my_proc]
AS
BEGIN
DECLARE @ID NVARCHAR(32) = N'f17584bd-1b19-4847-a9c7-b1560054de69';
SELECT @ID, CONVERT(uniqueidentifier, @ID);
EXEC msdb.dbo.sp_start_job @job_id = ID
END
但是,运行脚本时出现错误:
将数据类型 nvarchar 转换为 uniqueidentifier 时出错
因此,看起来 BEGIN 下面的部分发生了从 nvarchar 到 uniquetradeidentifer 的转换,失败了。
我也试过
DECLARE @ID uniqueidentifier
SET @ID = CAST( 'f17584bd-1b19-4847-a9c7-b1560054de69' as uniqueidentifier )
但有同样的错误。
这里有什么问题?
最初我有
EXEC msdb.dbo.sp_start_job @job_id = 'f17584bd-1b19-4847-a9c7-b1560054de69'
在 sql 级别执行该过程时有效,但使用我的 python 脚本运行该过程时出现错误:
指定的@job_id ('F17584BD-1B19-4847-A9C7-B1560054DE69') 不存在
感谢您的帮助
【问题讨论】:
标签: python sql stored-procedures