/* Change Revision -------------------------------------------------------------------------------------------------- Date Author Remarks */ CREATE PROCEDURE [dbo].[psarIsImplantCategoryCodeExist] @sImplantCategory VARCHAR(20) AS -- do your settings here... SET NOCOUNT ON -- declare and initialize local variables ... DECLARE @iReturn INT SET @iReturn = @@Error -- do your business transaction IF EXISTS (SELECT 1 FROM tcotCodeDetail WITH (NOLOCK) WHERE sCode = @sImplantCategory) SET @iReturn = 1 ELSE SET @iReturn = @@Error RETURN @iReturn SET NOCOUNT OFF 是否正确
时间: 2023-08-27 17:10:57 浏览: 92
这段代码的功能是创建一个名为 `psarIsImplantCategoryCodeExist` 的存储过程,用于判断给定的 `@sImplantCategory` 参数是否存在于 `tcotCodeDetail` 表的 `sCode` 字段中。如果存在,则返回值为 1,否则返回值为 @@Error。这个存储过程的代码看起来没有什么明显的错误,但是具体是否正确还需要看上下文和实际需求来判断。
相关问题
解析这段usb枚举 // SUBINF1_DSCR: 0x09, //0 Size of this 0x24, //1 CS_interface 0x01, //2 HEADER subtype 0x00, //3 Revision of class specification-1.0 0x01, //4 0x09, //5 total size of class specific descriptors 0x00, //6 0x01, //7 Number of streaming interfaces 0x01, //8 MIDIStreaming interface 1 belong to this AudioControl interface // INF2_DSCR 0x09, //0 Size of this 0x04, //1 TYPE:interface 0x01, //2 Index of this interface 0x00, //3 Index of this alternate setting 0x02, //4 endpoint number //Have USB in and USB out //0x01, //4 endpoint number //Change for only USB out\no USB IN(2006.12.30) 0x01, //5 audio 0x03, //6 midistreaming 0x00, //7 unused 0x00, //8 Unused // SUBINF2_DSCR: 0x07, //0 Size of this 0x24, //1 CS_interface 0x01, //2 HEADER subtype 0x00, //3 Revision of class specification-1.0 0x01, //4 0x41, //5 total size of class specific descriptors 0x00, //6 // SUBINF3_DSCR: 0x6, 0x24, 0x2, 0x1, 0x1, 0x0, // SUBINF4_DSCR: 0x6, 0x24, 0x2, 0x2, 0x2, 0x0, // SUBINF5_DSCR: 0x09, //0 Size of this 0x24, //1 CS_interface 0x03, //2 HEADER subtype 0x01, //3 Revision of class specification-1.0 0x03, //4 0x01, //5 total size of class specific descriptors 0x02, //6 0x01, //7 Number of streaming interfaces 0x00, //8 MIDIStreaming interface 0 belong to this AudioControl interface // SUBINF6_DSCR: 0x09, //0 Size of this 0x24, //1 CS_interface 0x03, //2 HEADER subtype 0x02, //3 Revision of class specification-1.0 0x04, //4 0x01, //5 total size of class specific descriptors 0x01, //6 0x01, //7 Number of streaming interfaces 0x00, //8 MIDIStreaming interface 1 belong to this AudioControl interface // IN endpoint (mandatory for HID) // Standard int IN endpoint descriptor //EP81_DSCR: 0x09, //0 Size of this descriptor 0x05, //1 Descriptor type: endpoint 0x81, //2 IN endpoint 1 0x02, //3 bulk 0x40, //4 64bytes 0x00, // 0x00, //6 0x00, //7 0x00, //8 // SUBEP81_DSCR: 0x05, 0x25, 0x01, 0x01, 0x03, // OUT endpoint // Standard int OUT endpoint descriptor //EP02_DSCR: 0x09, //0 Size of this descriptor 0x05, //1 Descriptor type: endpoint 0x02, //2 OUT endpoint 2 0x02, //3 bulk 0x40, //4 64bytes //0x10, //16bytes 0x00, // 0x00, //6 0x00, //7 0x00, //8 // SUBEP02_DSCR: 0x05, 0x25, 0x01, 0x01, 0x01
这段代码是USB设备的描述符信息,描述了该设备的各个接口和端点的信息。具体解析如下:
SUBINF1_DSCR:
- 第0字节:描述符大小为9字节。
- 第1字节:描述符类型为CS_INTERFACE。
- 第2字节:HEADER子类型。
- 第3字节:类规范版本为1.0。
- 第4字节:总共9字节的类特定描述符大小。
- 第5字节:流接口数为1。
- 第6字节:MIDIStreaming接口。
- 第7、8字节:未使用。
INF2_DSCR:
- 第0字节:描述符大小为9字节。
- 第1字节:描述符类型为INTERFACE。
- 第2字节:该接口的索引为1。
- 第3字节:该接口的备用设置索引为0。
- 第4字节:端点号为2。
- 第5字节:音频。
- 第6字节:MIDIStreaming。
- 第7、8字节:未使用。
SUBINF2_DSCR:
- 第0字节:描述符大小为7字节。
- 第1字节:描述符类型为CS_INTERFACE。
- 第2字节:HEADER子类型。
- 第3字节:类规范版本为1.0。
- 第4字节:总共65字节的类特定描述符大小。
- 第5字节:未使用。
- 第6字节:未使用。
SUBINF3_DSCR:
- 第0字节:描述符大小为6字节。
- 第1字节:未使用。
- 第2字节:未使用。
- 第3字节:未使用。
- 第4字节:未使用。
- 第5字节:未使用。
SUBINF4_DSCR:
- 第0字节:描述符大小为6字节。
- 第1字节:未使用。
- 第2字节:未使用。
- 第3字节:未使用。
- 第4字节:未使用。
- 第5字节:未使用。
SUBINF5_DSCR:
- 第0字节:描述符大小为9字节。
- 第1字节:描述符类型为CS_INTERFACE。
- 第2字节:HEADER子类型。
- 第3字节:类规范版本为1.0。
- 第4字节:总共1字节的类特定描述符大小。
- 第5字节:流接口数为2。
- 第6字节:MIDIStreaming接口。
- 第7字节:该接口属于AudioControl接口0。
- 第8字节:未使用。
SUBINF6_DSCR:
- 第0字节:描述符大小为9字节。
- 第1字节:描述符类型为CS_INTERFACE。
- 第2字节:HEADER子类型。
- 第3字节:类规范版本为1.0。
- 第4字节:总共1字节的类特定描述符大小。
- 第5字节:流接口数为1。
- 第6字节:MIDIStreaming接口。
- 第7字节:该接口属于AudioControl接口1。
- 第8字节:未使用。
EP81_DSCR:
- 第0字节:描述符大小为9字节。
- 第1字节:描述符类型为ENDPOINT。
- 第2字节:IN端点号为0x81。
- 第3字节:端点类型为BULK。
- 第4字节:端点最大包长度为64字节。
- 第5、6字节:未使用。
- 第7、8字节:未使用。
SUBEP81_DSCR:
- 第0字节:描述符大小为5字节。
- 第1字节:未使用。
- 第2字节:未使用。
- 第3字节:未使用。
- 第4字节:未使用。
EP02_DSCR:
- 第0字节:描述符大小为9字节。
- 第1字节:描述符类型为ENDPOINT。
- 第2字节:OUT端点号为2。
- 第3字节:端点类型为BULK。
- 第4字节:端点最大包长度为64字节。
- 第5、6字节:未使用。
- 第7、8字节:未使用。
SUBEP02_DSCR:
- 第0字节:描述符大小为5字节。
- 第1字节:未使用。
- 第2字节:未使用。
- 第3字节:未使用。
- 第4字节:未使用。
import re import requests import parsel # 数据解析模块 def change_title(title): """处理文件名非法字符的方法""" pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]") # '/ \ : * ? " < > |' new_title = re.sub(pattern, "_", title) # 替换为下划线 return new_title for page in range(13, 33): print('---------------正在爬取第{}页的数据----------------'.format(page)) # 1.确定数据所在的链接地址(url) 逆向分析 网页性质(静态网页/动态网页) url = 'https://www.ximalaya.com/youshengshu/4256765/p{}/'.format(page) headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'} # 2.通过代码发送url地址的请求 response = requests.get(url=url, headers=headers) html_data = response.text # print(html_data) # 3.解析数据(要的, 筛选不要的) 解析音频的 id值 selector = parsel.Selector(html_data) lis = selector.xpath('//div[@class="sound-list _is"]/ul/li') for li in lis: try: title = li.xpath('.//a/@title').get() + '.m4a' href = li.xpath('.//a/@href').get() # print(title, href) m4a_id = href.split('/')[-1] # print(href, m4a_id) # 发送指定id值json数据请求(src) json_url = 'https://www.ximalaya.com/revision/play/v1/audio?id={}&ptype=1'.format(m4a_id) json_data = requests.get(url=json_url, headers=headers).json() # print(json_data) # 提取音频地址 m4a_url = json_data['data']['src'] # print(m4a_url) # 请求音频数据 m4a_data = requests.get(url=m4a_url, headers=headers).content new_title = change_title(title) # print(new_title) # 4.数据持久化(保存) with open('video\\' + new_title, mode='wb') as f: f.write(m4a_data) print('保存完成:', title) except: pass
这段代码是一个简单的爬虫程序,用于爬取喜马拉雅网站上的有声书数据,并将音频文件保存到本地。具体来说,程序的实现步骤如下:
1. 确定需要爬取数据的链接地址,并使用 requests 库发送 GET 请求获取页面 HTML 数据。
2. 使用 parsel 库解析 HTML 数据,获取音频文件的标题和链接地址。
3. 通过解析的链接地址发送 GET 请求获取音频文件的 JSON 数据,提取音频文件的下载地址。
4. 使用 requests 库发送 GET 请求获取音频文件数据,并将数据保存到本地指定的文件夹和文件名中。
其中,`change_title` 函数用于将文件名中的非法字符替换为下划线,避免文件名中含有无法识别的字符导致文件保存失败。在循环中,通过 `for page in range(13, 33)` 语句遍历需要爬取的页面,然后依次爬取每个页面上的音频文件数据。
需要注意的是,该程序仅供学习和研究使用,未经授权不得用于商业用途。同时,爬取网站数据也需要遵守相关法律法规,不得侵犯他人的知识产权和隐私权。
阅读全文