Kra*_*ngh -1 t-sql database sql-server
我创建了sql proc来从数据库中选择记录它成功执行但没有返回任何内容
任何人都可以告诉我在哪里做错了吗?
CREATE PROC [dbo].[bb_EmailSentStatus]
@type varchar
AS
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
IF (@type='pending')
BEGIN
SELECT [Mail_Track_Id], [FromName],[FromEmail],[ToName],[ToEmail],[ReplyTo],
[Subject],[CreatedDate],[ModifiedDate],[Server_Msg],[FromSource]
FROM [dbo].[Mail_Track]
WHERE Active_Status=1 AND Sent_Status IS NULL
END
ELSE IF(@type='failed')
BEGIN
SELECT [Mail_Track_Id], [FromName],[FromEmail],[ToName],[ToEmail],[ReplyTo],
[Subject],[CreatedDate],[ModifiedDate],[Server_Msg],[FromSource]
FROM [dbo].[Mail_Track]
WHERE Active_Status=1 AND Sent_Status = 0
END
ELSE IF(@type='success')
BEGIN
SELECT [Mail_Track_Id], [FromName],[FromEmail],[ToName],[ToEmail],[ReplyTo],
[Subject],[CreatedDate],[ModifiedDate],[Server_Msg],[FromSource]
FROM [dbo].[Mail_Track]
WHERE Active_Status=1 AND Sent_Status = 1
END
COMMIT
Run Code Online (Sandbox Code Playgroud)
您尚未声明varchar参数的长度.将其更改为:
@type varchar(50)
Run Code Online (Sandbox Code Playgroud)
如果未指定长度,varchar则仅通过defalt获取1个字符.作为一个好习惯总是记得明确定义变量类型的长度,如varchar,nvarchar等.
如果您使用convert function将值转换为varchar,nvarchar字段,则通过defult需要30个字符,但即使这样,作为一个好习惯,您应该始终声明特定长度.